我有以下 matplotlib
我想将 x-ticks 分成 2 行而不是 1 行,因为有时它们太长了,这就是为什么它们会出现另一行,然后无法读取 x-ticks。
请记住 X-ticks 不是硬编码的,它们正在发生变化。所以并不总是相同的x-ticks。
因此,对于以下示例,如果我拥有而不是to Schleswig-Holstein我可以拥有,那就太好了:
to Schleswig-
Holstein
Run Code Online (Sandbox Code Playgroud)
我如何将字符串放在-x 刻度的换行符之后?或者只是在说 10 个字母之后我想换一行
顺便说一句,如果我可以像上面的示例一样将所有文本居中,那也很好
所以跟随也可以,但不是最好的。
to Schleswig-
Holstein
Run Code Online (Sandbox Code Playgroud)
PS:这是我使用的代码:
# create figure
fig = plt.figure()
# x-Axis (sites)
i = np.array(i)
i_pos = np.arange(len(i))
# y-Axis (values)
u = urbs_values
o = oemof_values
plt.bar(i_pos-0.15, list(u.values()), label='urbs', align='center', alpha=0.75, width=0.2)
plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))
plt.bar(i_pos+0.15, list(o.values()), label='oemof', align='center', alpha=0.75, width=0.2)
plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))
# tick names
plt.xticks(i_pos, list(map((' to ').__add__, list(u.keys()))))
# plot specs
plt.xlabel('Lines')
plt.ylabel('Capacity [MW]')
plt.title(site+' '+name)
plt.grid(True)
plt.legend()
plt.ticklabel_format(style='sci', axis='y')
# plt.show()
# save plot
fig.savefig(os.path.join(result_dir, 'comp_'+name+'_'+site+'.png'), dpi=300)
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)
您可以re按照此答案中的建议使用,并在每 10 个字符后创建一个带有新行字符的新标签列表。
import re
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
xlabels = ["to Schleswig-Holstein", "to Mecklenburg-Vorpommern", r"to Lower Saxony"]
xlabels_new = [re.sub("(.{10})", "\\1\n", label, 0, re.DOTALL) for label in xlabels]
plt.plot(range(3))
plt.xticks(range(3), xlabels_new)
plt.show()
Run Code Online (Sandbox Code Playgroud)
选择
xlabels_new = [label.replace('-', '-\n') for label in xlabels]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |