在使用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