在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1:
代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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:
只需在原代码中每个子图画图中加上代码:
1
|
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:轴标签倾斜显示
同样只需在原代码的基础上加上一句代码:
1
|
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里面的自动调整语句
只需在原代码的画图部分的最后加上matplotlib自动调整的语句,图则会自动调整标签大小:
1
|
plt.tight_layout()
|
以上这篇python matplotlib画盒图、子图解决坐标轴标签重叠的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/baidu_37995814/article/details/98727766