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处理PDF的方法
Nov 10 Python
老生常谈python中的重载
Nov 11 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python学生管理系统学习笔记
Mar 19 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Python中求对数方法总结
Mar 10 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 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中一个控制字符串输出的函数
2006/10/09 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
在django view中给form传入参数的例子
2019/07/19 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
python 代码运行时间获取方式详解
2020/09/18 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
八一建军节活动方案
2014/02/10 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python