Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 在绘图的x记号中显示值和索引_Python_Matplotlib_Plot - Fatal编程技术网

Python 在绘图的x记号中显示值和索引

Python 在绘图的x记号中显示值和索引,python,matplotlib,plot,Python,Matplotlib,Plot,我想使用plot(x,y)来绘制一些东西,并且能够在绘图上看到x 比如说 x = [10,30,100,120] y = [16,17,19,3] plot(x,y) 将显示 从图上看,很难知道每个点的原始索引是什么。例如,我想在看点(100,19)时知道它是索引2,因为x[2]=100和y[2]=19。 如何在matplotlib中执行此操作。 我查看了twiny()函数,但这似乎只是添加了另一个轴,而忽略了x中点之间的距离。以下是我的解决方案: import matplotlib.pyp

我想使用
plot(x,y)
来绘制一些东西,并且能够在绘图上看到
x

比如说

x = [10,30,100,120]
y = [16,17,19,3]
plot(x,y)
将显示

从图上看,很难知道每个点的原始索引是什么。例如,我想在看点(100,19)时知道它是索引2,因为
x[2]=100
y[2]=19
。 如何在matplotlib中执行此操作。 我查看了twiny()函数,但这似乎只是添加了另一个轴,而忽略了x中点之间的距离。

以下是我的解决方案:

import matplotlib.pyplot as plt
x = [10,30,100,120]
y = [16,17,19,3]
plt.plot(x,y);
for i, (a, b) in enumerate(zip(x, y)):
    plt.annotate(str(i), xy=(a, b), textcoords="offset points", xytext=(0, 12),
                 horizontalalignment='center', verticalalignment='center')
plt.xlim(0, 130)
plt.ylim(0, 22)
它的作用:它在
y
x
数组中枚举,将索引存储在变量
i
中,并将
x
y
的各自值存储在变量
a
b
中。然后在坐标
(a,b)
处注释索引
i
,使文本在y轴上偏移12个像素,以避免注释覆盖曲线

结果是:


对于非常大的图形,即1000个点,它可能运行缓慢,否则这是可以的。谢谢