python matplotlib画盒图、子图解决坐标轴标签重叠的问题


Posted in Python onJanuary 19, 2020

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

python matplotlib画盒图、子图解决坐标轴标签重叠的问题

代码为:

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:

python matplotlib画盒图、子图解决坐标轴标签重叠的问题

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

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:轴标签倾斜显示

python matplotlib画盒图、子图解决坐标轴标签重叠的问题

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

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里面的自动调整语句

python matplotlib画盒图、子图解决坐标轴标签重叠的问题

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

plt.tight_layout()

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

Python 相关文章推荐
python getopt 参数处理小示例
Jun 09 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python生成requirements.txt的两种方法
Sep 18 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python如何判断IP地址合法性
Apr 05 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
Python绘制组合图的示例
Sep 18 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python matplotlib中的subplot函数使用详解
Jan 19 #Python
Python中的 ansible 动态Inventory 脚本
Jan 19 #Python
Python实现序列化及csv文件读取
Jan 19 #Python
使用python turtle画高达
Jan 19 #Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 #Python
python实现五子棋游戏(pygame版)
Jan 19 #Python
Python turtle画图库&&画姓名实例
Jan 19 #Python
You might like
php学习之 数组声明
2011/06/09 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python with的用法
2014/08/22 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python实现邮件自动发送
2019/08/10 Python
python安装及变量名介绍详解
2020/12/12 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
服务承诺书
2015/01/19 职场文书
廉政承诺书范文
2015/04/28 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
草房子读书笔记
2015/06/29 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL