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 获取本机ip地址的两个方法
Feb 25 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
python多线程socket编程之多客户端接入
Sep 12 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
Python实现的txt文件去重功能示例
Jul 07 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
Python txt文件如何转换成字典
Nov 03 Python
python实战之90行代码写个猜数字游戏
Apr 22 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加密解密的代码
2007/07/16 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
setTimeout和setInterval的深入理解
2013/11/08 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Python读写文件方法总结
2015/06/09 Python
Django 路由控制的实现代码
2018/11/08 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
Django密码系统实现过程详解
2019/07/19 Python
python类中super() 的使用解析
2019/12/19 Python
pandas的resample重采样的使用
2020/04/24 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
公务员更新知识培训实施方案
2014/03/31 职场文书
采购部年度工作总结
2015/08/13 职场文书
村官2015年度工作总结
2015/10/14 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python
Golang生成Excel文档的方法步骤
2021/06/09 Golang
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript