【问题标题】:How to plot a rectangle behind a function over time如何随着时间的推移在函数后面绘制一个矩形
【发布时间】:2012-08-28 21:57:20
【问题描述】:

我正在使用 matplotlib 在 pandas 中绘制一个时间序列,并且我正在尝试为这样的绘图着色。

我有 A-F 积分的时间。我试图使用

来获得它们在情节中的位置
gcf().canvas.mpl_connect('button_press_event', debug_print_onclick_event)

最终 x 位置约为 22'395'850(甚至不接近 unixtime :S)

我的代码基本上是这样的:

plot = data.plot(legend=False) #where data is the timeseries (pandas.DataFrame).
plot.add_patch(
    plt.Rectangle(
        (0,22395760), 
        60, 
        45,
        facecolor='green',
        edgecolor='green'
    )
)
plt.draw()
plt.show()

但补丁的任何内容都没有显示出来。 也测试直接使用时间,实际运行但没有渲染补丁。

plt.Rectangle(
    (0,datetime_D), 
    60, 
    4*pandas.datetools.Minutes(15),
    facecolor='green',
    edgecolor='green'
)

什么是底层类型?我应该如何在matplotlib中及时定位things?任何丑陋的工作都会受到赞赏。

【问题讨论】:

  • 您似乎已将 x 和 y 交换为 Rectangle((x,y), ...) 的第一个参数。矩形((22395760, 0), ...)
  • omg,这可能是解决方案,我正在测试它,等等。
  • btw plot.axvspan() 似乎更适合您想做的事情
  • 非常感谢@lodagro。最初我对矩形的宽度有一些问题,要么是几分钟,要么是几天,这取决于我用于绘图的方法。但是 axvspan 就像一个魅力。 pl.gca().axvspan(date,date+2*pandas.datetools.Minute(15),facecolor='green',edgecolor='green',alpha=0.3) 总结一下你的 2 个 cmets 作为答案,我会选择它作为解决方案。
  • 使它有点像所有 cmets 的组合。在这里删除 cmets 可能更清洁。

标签: matplotlib pandas


【解决方案1】:

您似乎已将 x 和 y 交换为 Rectangle((x,y), ...) 的第一个参数。
Rectangle((22395760, 0), ...)

plot.axvspan() 似乎更适合您想做的事情,而不是使用补丁。

plt.gca().axvspan(date,date+2*pandas.datetools.Minute(15),facecolor='green',edge‌ color='green',alpha=0.3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多