在matplotlib中显示标签的问题

时间:2012-06-28 09:43:51

标签: matplotlib

我是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 个答案:

答案 0 :(得分: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)

这里我们设置xtick位置和标签。当然,y轴刻度标记需要类似的替换。