交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1:

    代码为:

    data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]]
    data2=[[0.2985,0.2268,0.2985,0.2996,0.2985],[0.2022,0.3203,0.3141,0.2926,0.2681],[0.2985,0.2668,0.2786,0.2985,0.2985],[0.2985,0.2985,0.2984,0.2978,0.2966]]
    data3=[[0.7789,0.7698,0.6999,0.7789,0.7789],[0.7788,0.7758,0.7768,0.7698,0.8023],[0.7789,0.7781,0.7789,0.7789,0.7789],[0.7789,0.7782,0.7752,0.7852,0.7654]]
    data4=[[0.6688,0.6688,0.6688,0.6981,0.6618],[0.6688,0.5644,0.5769,0.5858,0.5882],[0.6688,0.6688,0.6688,0.6688,0.6646],[0.6688,0.6646,0.6646,0.6688,0.6746]]  #date1-date4均为我用到的数据,数据的形式等可自行更换。
    ##将4个图画在一张图上
    fig=plt.figure(figsize=(13,11))
    ax1=fig.add_subplot(2, 2, 1)##左右布局
    ax2=fig.add_subplot(2, 2, 2)
    ax3=fig.add_subplot(2, 2, 3)##上下布局
    ax4=fig.add_subplot(2, 2, 4)
    
    plt.sca(ax1)   
    labels=['Today is Sunday','Today is Monday','Today is Tuesday','Today is Wednesday']#标签
    plt.boxplot(data1,labels=labels,boxprops={'linewidth':'2'},capprops={'linewidth':'2'},whiskerprops={'linewidth':'2'},medianprops={'linewidth':'2'}) #linewidth设置线条的粗细;boxprops、capprops、whiskerprops、medianprops表示盒图中各个线条的类型
    plt.ylabel('Today',fontsize=16)
    plt.xlabel('(a)',fontsize=16)
    
    plt.sca(ax2)   
    labels=['Today is Sunday','Today is Monday','Today is Tuesday','Today is Wednesday']
    plt.boxplot(data2,labels=labels,boxprops={'linewidth':'2'},capprops={'linewidth':'2'},whiskerprops={'linewidth':'2'},medianprops={'linewidth':'2'})
    plt.xlabel('(b)',fontsize=16)
    
    plt.sca(ax3)   
    labels=['Today is Sunday','Today is Monday','Today is Tuesday','Today is Wednesday']
    plt.boxplot(data3,labels=labels,boxprops={'linewidth':'2'},capprops={'linewidth':'2'},whiskerprops={'linewidth':'2'},medianprops={'linewidth':'2'})
    plt.ylabel('Today',fontsize=16)
    plt.xlabel('(c)',fontsize=16)
    
    plt.sca(ax4)   
    labels=['Today is Sunday','Today is Monday','Today is Tuesday','Today is Wednesday']
    plt.boxplot(data4,labels=labels,boxprops={'linewidth':'2'},capprops={'linewidth':'2'},whiskerprops={'linewidth':'2'},medianprops={'linewidth':'2'})
    plt.xlabel('(d)',fontsize=16)
    plt.show()
    

    1、解决办法1: 将轴标签分两行显示,如图2:

    只需在原代码中每个子图画图中加上代码:

    ax1.set_xticklabels(['Today is Sunday','\n'+'Today is Monday','Today is Tuesday','\n'+'Today is Wednesday'],fontsize=16) 

    '\n'+则表示换行显示的意思,想要哪个标签换行显示,则在标签前面加上此符号,也可以换多行,一个\n表示一行,例如'\n\n'+则表示换两行显示。fontsize是设置显示标签的字体大小。

    2、解决办法2:轴标签倾斜显示

    同样只需在原代码的基础上加上一句代码:

    ax1.set_xticklabels(['Today is Sunday','Today is Monday','Today is Tuesday','Today is Wednesday'],fontsize=16,rotation=10)
    
    

    rotation表示倾斜的角度,10即为倾斜10度,可任意设置,也可结合上面换行显示一同使用。

    3、解决办法3:利用matplotlib里面的自动调整语句

    只需在原代码的画图部分的最后加上matplotlib自动调整的语句,图则会自动调整标签大小:

    plt.tight_layout()
    

    以上这篇python matplotlib画盒图、子图解决坐标轴标签重叠的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持北冥有鱼。


    广而告之:
    热门推荐:
    深入浅出ES6之let和const命令

    let和const声明的变量只在代码块内有效 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 不存在变量提升 变量一定要在声明后使用,否则报错 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 不允许重复声明 // 报错 func···

    ASP.NET笔记之 Repeater的使用

    1、数据绑定combox-->BingdSource-->ObjectDataSource //连接数据库**后台代码: T_UserTableAdapter adpter=T_UserTableAdpter();adpater.调用T_User表的自定义方法              //设置初始数据:AppenddateBource="true"; &···

    原生JS实现逼真的图片3D旋转效果详解

    本文实例讲述了原生JS实现逼真的图片3D旋转效果。分享给大家供大家参考,具体如下: 实现效果: 实现过程: 步骤一:先写一个简单的html结构,创建一个box盒子,里面放对应的图片(也可以用js创建图片,这里为了好理解,我们直接用html创建). <body><div class="box"> ···

    调试代码导致IE出错的避免方法

    复制代码 代码如下: if(!window.console){ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml","group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; window.console = {}; for (var i = 0; i < na···

    JavaScript手机振动API

    很明显,这个API就是允许mobile程序员使用JavaScript调用手机的振动功能,并且能设定振动的方式和时长。 判断浏览器对振动API的支持情况 一个好的习惯就是在使用之前要检查一下当前你的应用环境、浏览器是否支持振动API。下面就是检测的方法: // Standards ftw! var supports···

    ASP.NET jQuery 实例10 动态修改hyperlink的URL值

    1.先准备界面代码: 复制代码 代码如下: <form id="form1" runat="server"> <div align="left"> <fieldset style="width: 300px; height: 200px;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td style="width: 10px"&···

    PHP autoload与spl

    PHP autoload机制详解(1) autoload机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这 也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使···

    五个jQuery图片画廊插件 推荐

    1、Pikachoose – lightweight Jquery Image Gallery plugin 查看Demo 效果还算不错,当然跟以前推荐的几个画廊插件还是有一些差距。 推荐指数:★★★ 2、Sliding Boxes and Captions with jQuery 查看Demo 此画廊有意思的地方在于图片滑动效果(貌似IE下无效,原因不明···

    php中计算中文字符串长度、截取中文字符串的函数代码

    在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启。当然,如果是用的自己的服务器,则只要在php.ini中开启即可。如果是用的虚拟主机,而服务器又没有开启这方面···

    JS实现仿Windows7风格的网页右键菜单效果代码

    本文实例讲述了JS实现仿Windows7风格的网页右键菜单效果代码。分享给大家供大家参考。具体如下: 这是一款JS仿Windows7风格的网页右键菜单,可以多级展开的右键菜单,原生JS。可参考性强,学习JavaScript的朋友不可错过。本菜单用户体验极佳,兼容性良好,无jQuery。 运行效果···