【发布时间】:2012-02-26 13:26:32
【问题描述】:
我已经使用 matplotlib 成功绘制了一组日期序列数据(X 轴是日期)。但是,我希望能够手动在绘图图上从一个 (date1, y1) 到另一个 (date2, y2) 画线。
我似乎找不到任何示例来说明如何做到这一点 - 或者确实是可能的。
总而言之,这就是我想要做的:
- 在绘制的图形上绘制一组线
- 将手动绘制的线条数据保存到文件中
- 从文件中加载手动绘制的线数据(以重新创建图形)
- 理想情况下,我想存储有关绘制线的“元数据”(例如颜色、线宽等)
有人可以发布一个骨架 sn-p(最好带有指向更多信息的链接),以展示我如何开始实现它(主要要求是能够在图表上手动绘制线条然后保存/加载线成情节)。
注意:“手动”是指能够通过单击一个点,然后单击绘图图中的另一个点来绘制线条。在两点之间画一条线(或简单地单击一个点并在绘制的图形上的另一个点上拖动并释放鼠标)
[[更新]]
dawe,非常感谢您提供的 sn-p。这使我可以做我想做的事情 - 但是,一旦在画布上绘制线条(在第二次鼠标单击之后),GUI 就会崩溃,并且我会在控制台上收到以下警告消息:
/usr/local/lib/python2.6/dist-packages/matplotlib/backend_bases.py:2192: DeprecationWarning: Using default event loop until function specific to this GUI is implemented
warnings.warn(str,DeprecationWarning)
你知道是什么导致了这个警告和程序突然终止吗?
另外,是否可以在图表上绘制多条线? (我猜这将涉及编写某种事件处理程序来实例化一个 linedrawer 变量)。目前,我有机会在“应用程序”突然终止之前只画一条线。
【问题讨论】:
-
"Manually" 是模棱两可的(用粗体表示并不能解决歧义)。你的意思是手动点击一个点,然后点击另一个,还是手动输入一些东西?或者两者都足够了?
-
@DSM:澄清了问题中使用的“手动”的含义。 HTH
-
我建议查看event handling 示例。
-
对我来说,手动意味着拿起铅笔开始画画。尽量准确,面对模棱两可,我会尽量拒绝猜测的诱惑(我在你澄清后删除了我的答案)。
标签: python matplotlib