python - 在特定点向绘图添加标记
问题描述
我有一个数据框(前几行):
我可以用以下方式绘制它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
但没有成功。
解决方案
如果你想结合 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')
推荐阅读
- spring-boot - 从 Spring 工具集 4 访问 tomcat 管理页面
- sql - 根据某些条件从存储过程创建数据库
- node.js - 从多个表中续集销毁
- go - 是否有任何自动增量机制用于使用 redigo 包装器将键的值存储在 redis 中?
- clojure - Clojure“地图”功能排序保证?
- selenium-webdriver - “为了您的安全,您不能从此设备登录。” usando selenium web-drivers en GCP Compute Engine
- c# - 对列表中的所有对象调用方法?
- apache-camel - 如何配置Apache Camel的serviceCall在Eureka服务发现中寻找服务?
- python - mir_eval 库返回 inf SIR
- mysql - MYSQL 平均一天统计