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 set集合类型操作总结
Nov 07 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
用python实现k近邻算法的示例代码
Sep 06 Python
Selenium的使用详解
Oct 19 Python
python Tkinter版学生管理系统
Feb 20 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Django shell调试models输出的SQL语句方法
Aug 29 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
python 实现的车牌识别项目
Jan 25 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
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
初识PHP中的Swoole
2016/04/05 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
python实现简易内存监控
2018/06/21 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
老公婚前保证书
2015/02/28 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Django使用echarts进行可视化展示的实践
2021/06/10 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL