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 相关文章推荐
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
bpython 功能强大的Python shell
Feb 16 Python
Python类的继承和多态代码详解
Dec 27 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
python 命名规范知识点汇总
Feb 14 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Django权限控制的使用
Jan 07 Python
python基础之错误和异常处理
Oct 24 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实现禁用IE和火狐的缓存问题
2012/12/03 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
轻松实现php文件上传功能
2017/02/17 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
Jquery遍历节点的方法小集
2014/01/22 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
技术入股合作协议书
2014/10/07 职场文书
考试作弊检讨书
2014/10/21 职场文书
公司行政管理制度范本
2015/08/05 职场文书
素质教育培训心得体会
2016/01/19 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技