此问题在此处已有答案:
How do I shift the x-axis over by one to start at 1 instead of 0?(3个答案)
3天前关闭。
我创建了一个函数生成了一个列表。我正在将一个图形集成到函数输出中。当我测试图形时,x轴上的刻度没有与图形上的正确点对齐;它们被偏移1。在tick 0的数据应该是tick 1,依此类推。
list = [0.38, 0.60, 0.65, 0.67, 0.71, 0.66, 0.65, 0.47, 0.71, 0.60]
plt.plot(list)
plt.show()
我尝试了:
plt.xticks(np.arange(1, len(list)+1)
这很好,但仍然是同一个问题。
我只是似乎不能移动xticks以与线图上相应的点对齐。任何帮助都将不胜感激。
Matplotlib版本3.5.2 Python 3小精灵版本1.21.5Pandas版本1.4.4
2条答案
按热度按时间j8ag8udp1#
Python使用从零开始的索引。
plt.plot
通常接受x
和y
的数组。如果你只提供后者,x
被隐式地当作索引,它是从零开始的。这意味着对
plot
的调用等效于如果要使用从1开始的索引绘图,请明确说明:
哦,不要调用你的变量
list
,当你试图调用内置的list
并得到numpy.ndarray is not callable
错误或类似的错误时,你会后悔的。9gm1akwq2#
我想你的意思是,在下图中(根据你的数据),第一个点从0开始,而你预期它会从1开始?
这是预期的行为,因为Python使用零索引,所以第一个(通俗意义上的)元素被赋予索引0。如果你想改变这一点,你建议的
plt.xticks()
方法不起作用,因为它设置了tick的位置,但没有将它们偏移1。这可以通过设置ticklabels来完成: