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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
python实现数据库跨服务器迁移
Apr 12 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python中reader的next用法
Jul 24 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
使用python爬取抖音视频列表信息
Jul 15 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
Python文本处理简单易懂方法解析
Dec 19 Python
Django如何实现密码错误报错提醒
Sep 04 Python
python从Oracle读取数据生成图表
Oct 14 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简单读取PDF页数的实现方法
2016/07/21 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
JS日历 推荐
2006/12/03 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
Js sort排序使用方法
2011/10/17 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
python中使用print输出中文的方法
2018/07/16 Python
Python中按键来获取指定的值
2019/03/02 Python
python3 深浅copy对比详解
2019/08/12 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
2013年研究生毕业感言
2014/02/06 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
拉贝日记观后感
2015/06/05 职场文书
交通安全学习心得体会
2016/01/18 职场文书
创业计划之特色精品店
2019/08/12 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android