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不带重复的全排列代码
Aug 13 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python实现拓扑排序的基本教程
Mar 11 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
python实现网站微信登录的示例代码
Sep 18 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
python进行参数传递的方法
May 12 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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生成唯一订单号
2015/07/05 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
python中set常用操作汇总
2016/06/30 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
Python requests模块cookie实例解析
2020/04/14 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
python能否java成为主流语言吗
2020/06/22 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
办护照工作证明范本
2014/01/14 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
党员公开承诺书内容
2014/05/20 职场文书
部队2015年终工作总结
2015/04/02 职场文书
会计主管岗位职责
2015/04/02 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
python requests模块的使用示例
2021/04/07 Python