我在iPython DataFrame中有这样的数据
Date X Y Z 0 2015-11-30 20:23:05.556 281.764900 -43.895060 8.714666 1 2015-11-30 20:23:05.757 192.519990 -44.636436 1.720552 2 2015-11-30 20:23:05.958 149.030600 -45.098050 1.958352 3 2015-11-30 20:23:06.171 140.707600 -44.622448 1.510729 4 2015-11-30 20:23:06.366 139.154890 -45.154003 4.783974 5 2015-11-30 20:23:06.564 138.875140 -44.790306 2.266093
@H_404_7@列的dtypes是这些:
Date datetime64[ns] X float64 Y float64 Z float64 dtype: object
@H_404_7@我将button_press_event设置为我的无花果
def onclick(event): print 'button=%d, x=%d, y=%d, xdata=%s, ydata=%f'%( event.button, event.x, event.y, event.xdata, event.ydata) cid = fig.canvas.mpl_connect('button_press_event', onclick)
@H_404_7@我希望以日期格式或字符串格式从x轴获取数据,但点击图表后我就是这样
button=1, x=152, y=339, xdata=735932.856811, ydata=8.518828
@H_404_7@如何在String中设置xdata的输出?
解决方法:
Matplotlib的日期支持在numpy的日期时间支持之前(完全在大熊猫之前).因此,它使用其own internal date convention.
要转换您回到日期时间的“原始”数字,请使用
matplotlib.dates.num2date
.作为一个类似于你正在做的事情的例子:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates def on_click(event): if event.inaxes is not None: print mdates.num2date(event.xdata) t = pd.date_range('2015-11-01', '2016-01-06', freq='H') y = np.random.normal(0, 1, t.size).cumsum() df = pd.DataFrame({'Y':y}, index=t) fig, ax = plt.subplots() df.plot(ax=ax) fig.canvas.mpl_connect('button_press_event', on_click) plt.show()
@H_404_7@版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。