在wxpython-plotting中的Matplotlib中止

时间:2011-08-14 17:32:22

标签: python wxpython matplotlib

我在我的wx.Frame中使用matplotlib在某个位置绘制一些箭头和文本。箭头的数量和位置基于先前创建的数据。 我做了一些计算,但基本上就是这样:

arrow =引物 每个底漆: 在y - 0.05处绘制一个箭头到previos箭头(primer_y - 0.05)。 箭头的x位置来自数据,这是计算和缩放的数据(不是那么重要,现在只是箭头应该在primer_x处。)

一切正常,直到我画了很多箭。例如。在我的代码示例中,数据包含62个箭头,其中18个正确绘制,接下来的3个丢失,但文本在那里,其余的完全缺失。

有谁知道可能是什么问题?我已经尝试过改变FigureSize,但它只是拉伸箭头。

这是一个快速而肮脏的工作示例,数据包含在代码中: http://pastebin.com/7mQmZm2c

非常感谢任何帮助! 提前致谢! 孙燕姿

1 个答案:

答案 0 :(得分:3)

  1.         print((primer_x+0.06, primer_y))
    

    循环内部。你会发现箭头不再被画出来了 primer_y变为否定。

  2. 标记时,请勿使用self.axes.annotate绘制箭头 self.fig.text的箭头。轴和图形使用不同 坐标系。将self.fig.text更改为self.axes.text 将允许您使用相同的坐标系,这将成为它 您可以更轻松地将文本放在箭头下方。
  3. 有太多了 代码中的硬编码数字(“幻数”)。它非常适合 难以修复,因为当一个数字改变时,其余的不改变 以合乎逻辑的方式与它一起。如果可以使用公式来定义 一些魔法数字之间的关系,你的生活会 要容易得多。
  4. 例如,如果将for循环更改为

    for primer,primer_y in zip(data,np.linspace(0.95,0.0,len(data))):
    

    而不是每次通过循环时将primer_y减去固定数量,然后primer_y会自动将自己在0.95之间留下0.0,无论data中有多少项

  5. 如果您发现箭头被压扁(垂直),您可以展开 通过更改此行的figsize来计算:

    self.fig = matplotlib.figure.Figure(figsize=(20, 30), facecolor='white')