在特定点向图添加标记

时间:2018-12-08 20:37:41

标签: python matplotlib

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

enter image description here

我可以用matplotlib.pyplot进行绘制:

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

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

获得:

enter image description here

我想做的是在数据帧的位置列中的值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'
)

我得到这样的情节:

enter image description here

有两件事。其中之一是,该指数被转换为可以在2055年发布的产品,我不明白为什么。另外,是否有一种方法可以仅使用第一个plot调用在特定位置添加标记?我尝试使用markevery,但没有成功。

1 个答案:

答案 0 :(得分:2)

如果要合并熊猫图和matplotlib日期时间图,则需要以兼容模式绘制熊猫图

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')