我必须使用Matplotlib库在XAxis上可视化带有中文刻度标签的某些数据。这是一个示例:
我想更改刻度标签的文本方向以得到如下图:
请注意,它不是“文本轮换”。这是关于文字方向的。
如何在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()
文字被遮挡了。
以上情节的代码:
import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
# myfont = mfont.FontProperties('SimHei', size=30)
data = [1,2,3,4,5]
labels = ['中\n文\n1', '中\n文\n2 ', '中\n文\n3', '中\n文\n4', '中\n文\n5']
fig = plt.figure()
fig.set_facecolor('white')
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)
for label in ax.xaxis.get_majorticklabels():
label.set(family='SimHei', size=15, backgroundcolor='red', linespacing=3)
plt.show()
答案 0 :(得分:2)
我认为没有任何方法可以在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()
答案 1 :(得分:1)
一种解决方法,可在打印刻度时使每个单词换行。
labels = ['\n'.join(list(tick)) for tick in labels ]
答案 2 :(得分:0)
访问:
https://matplotlib.org/gallery/ticks_and_spines/ticklabels_rotation.html
示例:
$stmt = $dbdto->prepare("CALL testSO(?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('iiiiissi', $val1, $val2, $val3, $val4, $val5, $val6, $vl7, $val8);
$stmt->execute();
$result = $stmt->get_result();
$data = array();
while ( $row = $result->fetch_assoc() ) {
$data[] = $row;
}
$newdata = array();
$arr = ["i_value_p", "i_value_n", "i_value_u"];
foreach ($arr as $item) {
$row_array = array();
$row_array["name"] = $item;
$row_array["data"] = array();
//loop fruits
foreach ($data as $d) {
}
array_push($newdata, $row_array);
}
您可以按刻度或关键字指定刻度标签的旋转角度。
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')
填充边距,以便标记不会被轴剪切
plt.xticks(x, labels, rotation='vertical')
调整间距以防止刻度标签被剪裁
plt.margins(0.2)