【问题标题】:Matplotlib Plot points on an existing line, only by knowing x valuesMatplotlib 在现有线上绘制点,仅通过知道 x 值
【发布时间】:2021-05-05 16:53:04
【问题描述】:

我有 2 个数据框:

'stock' 是一个包含日期和价格列的数据框。 “事件”是一个包含日期和文本列的数据框。

我的目标是生成股票价格图表,并在事件发生的位置在线放置点。但是,我不知道如何为事件数据框设置“y”值,因为我希望它位于股票数据框上的位置。

我能够很好地绘制第一个数据帧:

plt.plot('Date', 'Price', data=stock)

我尝试用以下方式绘制事件点:

plt.scatter('created_at', ???, data=events)

然而,它是???我不知道如何设置

【问题讨论】:

    标签: python pandas dataframe matplotlib


    【解决方案1】:

    假设Datecreated_atdatetime

    stock = pd.DataFrame({'Date':['2021-01-01','2021-02-01','2021-03-01','2021-04-01','2021-05-01'],'Price':[1,5,3,4,10]})
    events = pd.DataFrame({'created_at':['2021-02-01','2021-03-01'],'description':['a','b']})
    
    stock.Date = pd.to_datetime(stock.Date)
    events.created_at = pd.to_datetime(events.created_at)
    

    通过events.created_at(或合并)过滤stock并将它们绘制到相同的ax上:

    stock_events = stock[stock.Date.isin(events.created_at)]
    
    # or merge on the date columns
    # stock_events = stock.merge(events, left_on='Date', right_on='created_at')
    
    ax = stock.plot(x='Date', y='Price')
    stock_events.plot.scatter(ax=ax, x='Date', y='Price', label='Event', c='r', s=50)
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      相关资源
      最近更新 更多