【问题标题】:Matplotlib - Highlight points from already plotted graph using only Y-coordinateMatplotlib - 仅使用 Y 坐标突出显示已绘制图形中的点
【发布时间】:2019-01-29 16:01:12
【问题描述】:

我有一些股票数据,我绘制了数据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()

任何帮助将不胜感激

【问题讨论】:

  • “突出显示”是什么意思?你想让这些点变成不同的颜色吗?
  • 你可以在第一个图的顶部再次绘制
  • @JordanSinger 是的
  • @BanishedBot 是的,我可以做到这一点,但有任何 matplotlib 方法可以做到这一点,因为如果我手动执行此操作,我必须遍历整个数据集以找到价格索引然后绘制
  • 请注意subarray 的成员在初始y 数组中不一定是唯一的。因此,对此没有“通用”解决方案。相反,您应该首先查看您是如何创建 subArray 的,并将相应索引(和/或来自 x 的值)的列表与它一起存储。

标签: python python-3.x matplotlib graph


【解决方案1】:

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

话虽如此,如果转换为 NumPy 数组,事情会变得更容易。以下是在here987654322@

中查找索引的一种方法
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')

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2019-01-29
    相关资源
    最近更新 更多