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实现螺旋矩阵的填充算法示例
Dec 28 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
对Python中的条件判断、循环以及循环的终止方法详解
Feb 08 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 Python
python爬虫基础知识点整理
Jun 02 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
深入浅析Django MTV模式
Sep 04 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 压缩文件夹的类代码
2009/11/05 PHP
PHP 进程锁定问题分析研究
2009/11/24 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
网页javascript精华代码集
2007/01/24 Javascript
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
document.write的几点使用心得
2014/05/14 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
理解Python垃圾回收机制
2016/02/12 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实现端口检测的方法
2018/07/24 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python 6行代码制作月历生成器
2020/09/18 Python
python如何实现递归转非递归
2021/02/25 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
关于教师节的广播稿
2014/09/10 职场文书
商家认证委托书格式
2014/10/16 职场文书
汽车转让协议书
2015/01/29 职场文书
十七岁的单车观后感
2015/06/12 职场文书
银行资信证明
2015/06/17 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL