【问题标题】:Matplotlib datetime on the x axisx 轴上的 Matplotlib 日期时间
【发布时间】:2015-05-02 08:23:21
【问题描述】:

如果您的 x 轴上有日期时间对象,您如何获得在 matplotlib 的单击事件处理程序上单击的对象?

即当你这样做时:

def onclick2(event):
    print event.x

onClickId = figure.canvas.mpl_connect('button_press_event', OnClick2)

我尝试过 event.x、event.xdata 和 event._x,它们都返回整数

【问题讨论】:

    标签: python graph matplotlib


    【解决方案1】:

    我在尝试从使用 matplotlib 绘制的 pandas 时间索引数据帧返回时间戳 x 轴数据时遇到了类似的问题。尝试 Ajean 对 event.xdata 的 num2date 建议会返回一个浮点值,该值太大而不能成为日期数字(例如 23286385.16 表示 2014-4-14 2:25)。

    为了扩展 Ajean 的建议,最好先使用 matplotlib.dates.date2num 函数将 datetime 对象转换为 numpy.float64。然后你可以使用这个创建的 numpy.float64 数组作为 x 轴和 matplotlib 事件处理程序。从事件处理程序返回的 event.xdata 然后可以使用matplotlib.dates.num2date 函数转换回日期时间。

    【讨论】:

      【解决方案2】:

      它们可能真的是整数......我相信 matplotlib 通过首先将它们转换为整数或浮点数来绘制日期。使用您的事件数据尝试 matplotlib dates 模块中的 num2date 函数,这可能会产生您想要的结果。

      【讨论】:

        【解决方案3】:

        您应该使用num2date(…) 来获取日期。有关如何使用它的示例,请参阅this answer

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-07
          • 1970-01-01
          • 2020-06-09
          • 2016-01-03
          • 1970-01-01
          • 2019-12-19
          • 2020-03-24
          • 2013-07-21
          相关资源
          最近更新 更多