我正在尝试使用 python 和 matplotlib 绘制矢量。
我的问题是,在 matplotlib.pyplot 中,我的数据的 x 轴从 0 开始到 23 结束。在图中也考虑了同样的问题。
我想要的是这个轴从标签 1 开始(它与第一个 y 值相关,或自然 python 索引中的值 #0)并以 24 结束(与最后一个 y 值相关,或在自然 python 索引中的值 #23)自然 python 索引)。
我试过pp.xlim(xmin=1),但是问题是,这样一来,图中的第一个维度(0)就消失了,上界继续是23,我希望是24,第一个 y 值的 x 值标记为 1(不是 0)。
这solution不适合我。我试图在图表的 x 轴上使用标签 [1,24] 而不是 [0,23]。如我所写,如果我使用 xlim=1 或 set_xlim=1 从 x 轴上的 1 开始,则第一个 y 值(向量的维度 0)不会显示在图中。它以第二个 y 值(向量的第 1 维)开始,以最后一个值结束。我不想要它。这是我正在使用的源代码。
import matplotlib.pyplot as pp
import numpy as np
a=np.array( [0.10478151, 0.09909564, 0.01319826, 0.00743225, 0.00483721, 0.18202419, 0.01732046, 0.04153536, 0.03317991, 0.0536289, 0.00585423, 0.00929871, 0.00629363, 0.12180654, 0.00607781, 0.03752038, 0.05547452, 0.01459015, 0.00604909, 0.01132442, 0.00710363, 0.11159429, 0.0079922, 0.04198672])
pp.xlabel('Dimension')
pp.ylabel('Importance')
ax=pp.subplot(111)
ax.set_xlim(1, 24)
dim=np.arange(1,24,1);
ax.plot(a, 'ro', color='r',linewidth=1.0, label="Graph2")
pp.xticks(dim)
pp.grid()
pp.show()
pp.close()
当我运行代码时,生成的图像如下图所示:
预计第一个 y 值将在 x=1 中显示,最后一个在 x=24 中显示。但是 Python 索引从 0 开始,所以看起来代码正在“移动”值,从 x=2(或 python 自然索引中的 x=1)开始。
solution proposed here对我没有帮助,因为它不会显示第一个值 (0)。我想要显示所有值,但标签必须以 1 开头并以 24 结尾。问题是 python 索引将以 0 开头并以 23 结尾。
如何在python中处理这个问题?
最佳答案
我知道这是一个很老的问题,但我找到了一个非常简单的解决方案:
import matplotlib.pyplot as pp
import numpy as np
a=np.array( [0.10478151, 0.09909564, 0.01319826, 0.00743225, 0.00483721, 0.18202419, 0.01732046, 0.04153536, 0.03317991, 0.0536289, 0.00585423, 0.00929871, 0.00629363, 0.12180654, 0.00607781, 0.03752038, 0.05547452, 0.01459015, 0.00604909, 0.01132442, 0.00710363, 0.11159429, 0.0079922, 0.04198672])
pp.xlabel('Dimension')
pp.ylabel('Importance')
pp.plot(a, 'ro', color='r',linewidth=1.0, label="Graph2")
# just the following line will do it
pp.xticks(np.arange(len(a)), np.arange(1, len(a)+1))
pp.grid()
pp.show()
pp.close()
关于Python MatplotLib 绘制 x 轴,第一个 x 轴值标记为 1(而不是 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288383/