如何更改Matplotlib中记号标签的文本方向?

2024-04-19 15:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须使用Matplotlib库来可视化一些在XAxis上带有中文记号标签的数据。下面是一个例子:

A plot with Chinese tick labels

我想更改记号标签的文本方向以获得如下绘图:

enter image description here

注意,它不是“文本旋转”。是关于文字的方向。在

如何在Matplotlib中实现这一点?在

p.S。 以上曲线图是在Excel中创建的,用于演示。下面是Matplotlib的代码,它可以生成与第一个一样的绘图。好吧,我不能在Matplotlib中生成第二个,所以我来这里。。。在

import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
myfont = mfont.FontProperties('SimHei')

data = [1,2,3,4,5]
labels = ['中文1', '中文2', '中文3', '中文4', '中文5']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)

for label in ax.xaxis.get_majorticklabels():
    label.set(fontproperties=myfont)
plt.show()

我在标签文本中插入了新行,我得到了这样一个情节: enter image description here

有什么东西挡住了这篇文章。在

上图代码:

^{pr2}$

Tags: 代码文本import绘图datamatplotlibasplt
3条回答

访问:

https://matplotlib.org/gallery/ticks_and_spines/ticklabels_rotation.html

示例:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 6]
labels = ['Frogs', 'Hogs', 'Bogs', 'Slogs']

plt.plot(x, y, 'ro')

可以指定刻度标签的旋转角度(度)或关键字。在

^{pr2}$

填充页边距,这样标记就不会被轴剪切

plt.margins(0.2)

调整间距以防止剪切记号标签

plt.subplots_adjust(bottom=0.15)
plt.show()

我不认为有任何选项可以在matplotlib中垂直打印文本。但是,您可以通过在要打印的文本中插入新行字符来进行简单的修改。在

import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
myfont = mfont.FontProperties('SimHei')

data = [1,2,3,4,5]
labels = ['中\n文\n1', '中\n文\n2', '中\n文\n3', '中\n文\n4', '中\n文\n5']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)

for label in ax.xaxis.get_majorticklabels():
    label.set(fontproperties=myfont)
plt.show()

一种解决方法,在打印刻度时将每个单词放入新行。在

labels = ['\n'.join(list(tick)) for tick in labels ]

相关问题 更多 >