首页 > 解决方案 > 在特定点向绘图添加标记

问题描述

我有一个数据框(前几行):

在此处输入图像描述

我可以用以下方式绘制它matplotlib.pyplot

fig = plt.figure()
ax1 = fig.add_subplot(111,  ylabel='Price')

df1[['Close']].plot(ax=ax1)

要得到:

在此处输入图像描述

我想要做的是在数据框位置列中的2018-09-10 04:00:00值指示的索引处添加一个标记以绘制向下三角形。-1

我试图这样做:

fig = plt.figure()
ax1 = fig.add_subplot(111,  ylabel='Price')

df1[['Close']].plot(ax=ax1)
ax1.plot(
    df1.loc[df1.positions == -1.0].index,
    df1.Close[df1.positions == -1.0],
    'v', markersize=5, color='k'
)

我得到这样的情节:

在此处输入图像描述

所以有两件事。一个是索引被转换为 2055 年的东西,我不明白为什么。另外有没有办法只使用第一次plot调用在特定位置添加标记?我尝试使用markevery但没有成功。

标签: pythonmatplotlib

解决方案


如果你想结合 pandas plots 和 matplotlib datetime plots,pandas plot 需要在兼容模式下绘制

df1['Close'].plot(ax=ax1, x_compat=True)

这可能已经给你想要的情节了。

如果不想使用 matplotlib,可以绘制过滤后的数据框

df1['Close'].plot(ax=ax1)
df1['Close'][df1.positions == -1.0].plot(ax=ax1, marker="v", markersize=5, color='k')

推荐阅读