Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib,如何压缩x轴的部分_Python_Matplotlib - Fatal编程技术网

Python matplotlib,如何压缩x轴的部分

Python matplotlib,如何压缩x轴的部分,python,matplotlib,Python,Matplotlib,嘿,伙计们,这是我第一次在这里发帖,希望这个问题不会太琐碎。我试着寻找解决办法,但找不到我想要的 我这里有一个非常简单的代码,它绘制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

嘿,伙计们,这是我第一次在这里发帖,希望这个问题不会太琐碎。我试着寻找解决办法,但找不到我想要的

我这里有一个非常简单的代码,它绘制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()
我添加了标记以更好地显示数据点。结果如下所示:

编辑

如果您想可视化轴不是连续的,可以在中找到帮助

EDIT2

在我的示例中,我只将
y
-值传递给
plot
函数,这意味着
x
-值隐式计算为[1,2,3,4,5]。当然,您也可以显式地传递每个plot命令的
x
-值,从而改变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()

嗨,对不起,我有一个后续问题,我不确定如何解决它。基本上,我想在同一个绘图中添加另一行,但我希望它从x=2开始。但是如果我有y1=[2,3,4,5,6],我加上ax.plot(y1),它将从x=1开始。我也试着做ax.plot(x1,y1),其中x1=[2,3,10,11,12],但这导致了添加新行的这篇文章的原始问题。任何帮助都将不胜感激,谢谢@MoustafaNassar看一下我对答案所做的编辑。