Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 缩小matplotlib图形中的xticklabels区域_Python_Matplotlib_Plot_Axis Labels - Fatal编程技术网

Python 缩小matplotlib图形中的xticklabels区域

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

我的x轴标签(图下方的标签)从整个图形中占用了宝贵的空间。我曾尝试通过更改文本旋转来减小其大小,但这没有多大帮助,因为文本标签相当长

是否有更好的方法来减少xticklabel区域占用的空间?例如,我可以在栏中显示此文本吗?谢谢你的支持

我的图形设置代码是:

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开发版本文档中的教程:太棒了!谢谢你这么完整的回答!