我有很长的绘图刻度标签,不幸的是我无法缩短。因此,我正在寻找将标签拆分为多行(换行文本)的代码。我尝试了文本换行,但它导致我的代码出现错误。将刻度标签设置为rotation=0会使刻度标签相互重叠并变得不可读。
我也尝试过使用一个rotation=90,但刻度标签却溢出到我的图表空间中。
plt.title(param)
plt.ylabel('Measurement')
plt.xticks(x_axis, labels, rotation = 10, fontsize=8, horizontalalignment="center")
plt.tick_params(axis='x', pad=6)
lgd = ax.legend(loc = 'upper left', bbox_to_anchor=(1,1))
Run Code Online (Sandbox Code Playgroud)
textwrap是要走的路。功能更精准textwrap.fill()。您还没有发布收到的错误消息,但我确实假设您将整个数组传递给了labels这fill()将导致错误消息。使用列表理解来传递每个单独的标签,fill()它将起作用。
x_axis=range(5)
labels = ['abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'] * len(x_axis)
plt.title('param')
plt.ylabel('Measurement')
# Note list comprehension in the next line
plt.xticks(x_axis, [textwrap.fill(label, 10) for label in labels],
rotation = 10, fontsize=8, horizontalalignment="center")
plt.tight_layout() # makes space on the figure canvas for the labels
plt.tick_params(axis='x', pad=6)
Run Code Online (Sandbox Code Playgroud)
给出