大家好,这是我第一次在这里发布文章,希望这个问题不会太琐碎。我尝试寻找解决方案,但找不到我想要的。
我这里有这个非常简单的代码,可以绘制xy线图
x = [1,2,3,10,11] y = [1,2,3,4,5] plt.plot(x,y) plt.xticks(x)
然后,图如下所示: 图
我想做的是压缩x轴,使每个点之间的间距相同。例如,3到10之间的间隔与1到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()
我添加了标记以更好地可视化数据点。结果看起来像这样:
编辑 :
如果您想直观地看到轴不连续,则可以在此答案中找到帮助。
编辑2 :
在我的示例中,我仅将y-values传递给plot函数,这意味着x-values被隐式计算为[1,2,3,4,5]。当然,您也可以x显式地传递每个绘图命令的- values,从而改变x哪个绘图开始于哪个-value。对于您评论中的示例,这将是:
y
plot
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()