Matplotlib-仅使用Y坐标突出显示已绘制图形中的点

时间:2019-01-29 16:01:13

标签: python python-3.x matplotlib graph

我有一些库存数据,我绘制了数据index = x-axisprice = y-axis,现在计算之后,我发现了一个价格数组,即价格的子数组。我想突出显示图形上数组中的点

我尝试了markvery() documentation,但无法理解其工作原理。 这是我的代码

from matplotlib
import pyplot as plt


x =[ 1,2,3,4,5,6,7] # array to be plotted
y=[100,111,112,111,112,113,114] # array to be plotted

subArray = [111,114] # array to be highlighted
plt.plot(x,y)
plt.show()

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您的子数组包含两个在y中出现多次的点。因此,首先可以从y获取subArray元素的索引,然后再次分别绘制它们以突出显示它们。正如@ImportanceOfBeingErnest所指出的那样,没有内置的通用方法。

话虽如此,如果您转换为NumPy数组,事情会变得更加容易。以下是在列出的here

中查找索引的一种方法
import numpy as np

x =np.array([ 1,2,3,4,5,6,7]) # array to be plotted
y=np.array([100,111,112,111,112,113,114]) # array to be plotted

subArray = [111,114] 
ids = np.nonzero(np.in1d(y, subArray))[0]

plt.plot(x,y)
plt.plot(x[ids], y[ids], 'bo')

enter image description here