嘿伙计们这是我第一次在这里发帖,希望这个问题不是太微不足道。我试图寻找解决方案,但找不到我想要的东西。
我在这里有一个非常简单的代码,它绘制了xy折线图
x = [1,2,3,10,11]
y = [1,2,3,4,5]
plt.plot(x,y)
plt.xticks(x)
图表看起来像这样: Graph
我想要做的是压缩x轴,使每个点之间的间距相同。例如,3到10之间的空间与1到2之间的空间相同。
有办法做到这一点吗?谢谢!
答案 0 :(得分:2)
这应该这样做:
from matplotlib import pyplot as plt
fig,ax = plt.subplots()
x = [1,2,3,10,11]
y = [1,2,3,4,5]
ax.plot(y,marker='o')
ax.set_xticks([i for i in range(len(y))])
ax.set_xticklabels(x)
plt.show()
修改强>:
如果您想要想象轴不是连续的,可以在this answer中找到帮助。
<强> EDIT2 强>:
在我的示例中,我只将y
- 值传递给plot
函数,这意味着x
- 值被隐式计算为[1,2,3, 4,5]。当然,您也可以明确地为每个绘图命令传递x
- 值,从而改变哪个x
- 绘图开始的值。对于评论中的示例,这将是:
fig,ax = plt.subplots()
y1 = [1,2,3,4,5]
x1 = [i for i in range(len(y1))]
y2 = [2,3,4,5,6]
x2 = [i+1 for i in range(len(y2))]
xticks = list(set(x1+x2)) #or more explicit: [i for i in range(6)]
xtick_labels = [1,2,3,10,11,12]
ax.plot(x1,y1,marker='o')
ax.plot(x2,y2,marker='x')
ax.set_xticks(xticks)
ax.set_xticklabels(xtick_labels)
plt.show()