Python 缩小matplotlib图形中的xticklabels区域
我的x轴标签(图下方的标签)从整个图形中占用了宝贵的空间。我曾尝试通过更改文本旋转来减小其大小,但这没有多大帮助,因为文本标签相当长 是否有更好的方法来减少xticklabel区域占用的空间?例如,我可以在栏中显示此文本吗?谢谢你的支持 我的图形设置代码是:Python 缩小matplotlib图形中的xticklabels区域,python,matplotlib,plot,axis-labels,Python,Matplotlib,Plot,Axis Labels,我的x轴标签(图下方的标签)从整个图形中占用了宝贵的空间。我曾尝试通过更改文本旋转来减小其大小,但这没有多大帮助,因为文本标签相当长 是否有更好的方法来减少xticklabel区域占用的空间?例如,我可以在栏中显示此文本吗?谢谢你的支持 我的图形设置代码是: import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.sans-serif'] = "Century Gothic" matplotlib.r
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = "Century Gothic"
matplotlib.rcParams['font.family'] = "Century Gothic"
ax = df1.plot.bar(x = '', y = ['Events Today', 'Avg. Events Last 30 Days'], rot = 25, width=0.8 , linewidth=1, color=['midnightblue','darkorange'])
for item in ([ax.xaxis.label, ax.yaxis.label] +
ax.get_xticklabels() + ax.get_yticklabels()):
item.set_fontsize(15)
ax.legend(fontsize = 'x-large', loc='best')
plt.tight_layout()
ax.yaxis.grid(True, which='major', linestyle='-', linewidth=0.15)
ax.set_facecolor('#f2f2f2')
plt.show()
当我以不美观的长XTicklabel结束时,我要做的第一件也是最重要的事情就是尽量缩短它们。这似乎很明显,但值得指出的是,使用缩写或不同的描述通常是最简单和最有效的解决方案 如果您被长名称和特定字体大小所困扰,我建议您改为制作水平条形图。我通常更喜欢标签较长的水平图,因为不旋转的文本更容易阅读(这也可能使字体大小进一步减小),添加换行符也会有所帮助 以下是带有笨拙标签的图形示例:
import pandas as pd
import seaborn as sns # to get example data easily
iris = sns.load_dataset('iris')
means = iris.groupby('species').mean()
my_long_labels = ['looooooong_versicolor', 'looooooooog_setosa', 'looooooooong_virginica']
# Note the simpler approach of setting fontsize compared to your question
ax = means.plot(kind='bar', y=['sepal_length', 'sepal_width'], fontsize=15, rot=25)
ax.set_xlabel('')
ax.set_xticklabels(my_long_labels)
我会将其更改为水平条形图:
ax = means.plot(kind='barh', y=['sepal_length', 'sepal_width'], fontsize=15)
ax.set_ylabel('')
ax.set_yticklabels(my_long_labels)
您可以在标签中引入换行符以进一步提高可读性:
ax = means.plot(kind='barh', y=['sepal_length', 'sepal_width'], fontsize=15, rot=0)
ax.set_ylabel('')
ax.set_yticklabels([label.replace('_', '\n') for label in my_long_labels])
这也适用于垂直杆:
ax = means.plot(kind='bar', y=['sepal_length', 'sepal_width'], fontsize=15, rot=0)
ax.set_xlabel('')
ax.set_xticklabels([label.replace('_', '\n') for label in my_long_labels])
最后,你也可以把文本放在条内,但这很难阅读
ax = means.plot(kind='barh', y=['sepal_length', 'sepal_width'], fontsize=15)
ax.set_ylabel('')
ax.set_yticklabels(my_long_labels, x=0.03, ha='left', va='bottom')
这个问题的一部分呢??!提供描述、代码、打印..您是在问我或任何愿意回答此问题的人,以便自己制作一些
df1
。考虑到你是这里寻求帮助的人,你真是太好了。如果你不想帮助,我什么也不要求你。你肯定需要添加一些示例数据。如果没有,我所要做的就是将您链接到matplotlib开发版本文档中的教程:太棒了!谢谢你这么完整的回答!