matplotlib显示标签存在问题。

3

我是一个 Python 和 Matplotlib 的新用户,请多多指教。

我有一个图表,x 和 y 轴标签已更改以对应化学化合物。

但是,当我制作 10x10 的图表时(我认为限制是8x8),并不是所有的标签都显示出来。

当然,我希望在 8 x 12 的图表中,所有的标签都能显示。

以下是我使用的一些代码,仅包含随机数字。

import numpy as np
import matplotlib.pyplot as plt

HOST = ['RuO2', 'IrO2', 'TiO2', 'MnO2','SnO2','MoO2','NbO2','Dummy','Dummy','Dummy']

GUEST = ['Ru','Ir','Ti','Mn','Sn','Fe','Ni','Zn','Mg','D']

data = np.random.random((10,10))

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(data)
fig.colorbar(cax)

ax.set_xticklabels(['']+HOST,rotation=90)
ax.set_yticklabels(['']+GUEST)

plt.show()

这当然会根据我的数据等进行修改。


对于一个简短、自包含、正确(可编译)的示例,请点赞+1。 - Chris
1个回答

4

请查看matplotlib.pyplot.xticks函数,它可以设置或获取x轴刻度位置和标签。如果我调用这个函数:

locs, labels = plt.xticks()

在你的示例代码中,我注意到xticks的位置在哪里。
>>> locs
[ -2.,   0.,   2.,   4.,   6.,   8.,  10.]

注意到两个数据点-2和10没有标签,这意味着有5个x轴刻度位置,因此您不会得到所有标签的绘制,因为x轴刻度标签数量超过了x轴刻度位置的数量。尝试替换。

ax.set_xticklabels(['']+HOST, rotation=90)

使用

ax.xticks(range(len(HOST), HOST, rotation=90)

在这里,我们设置了x轴刻度位置和标签。当然,y轴刻度线也需要进行类似的替换。


未按预期工作。首先,旋转不可能,但这并不重要。现在我得到了一个图,其中每个第二行都有标签,而且它是数字而不是我指定的字符串。 - user1488097
当我进行我建议的修改时,我会在x轴上得到10个标签,包括RuO2IrO2、... Dummy等。这不是你想要的吗?另外,你所说的“旋转不可能”是什么意思?对我而言它是可以工作的。你能否在问题中更具体一些?也许发布一些你试图实现的屏幕截图会更好。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接