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实现ipsec开权限实例
Nov 11 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
Python异常处理知识点总结
Feb 18 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
linux中如何使用python3获取ip地址
Jul 15 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
python list的index()和find()的实现
Nov 16 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
桌面中心(二)数据库写入
2006/10/09 PHP
PHP输出时间差函数代码
2013/01/28 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
Windows和Linux动态库应用异同
2016/07/28 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
一年级小学生评语
2014/04/22 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015年档案室工作总结
2015/05/23 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
redis lua限流算法实现示例
2022/07/15 Redis