python - wxpython-plotting 中的 Matplotlib 中止

标签 python wxpython matplotlib

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

箭头=底漆 对于每个底漆: 在位置 y - 0.05 到上一个箭头 (primer_y - 0.05) 处绘制一个箭头。 箭头的 x 位置来自数据,经过计算和缩放(知道的不是那么重要,只是现在箭头应该位于 prime_x 的位置)。

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

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

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

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

最佳答案

  1. 坚持

            print((primer_x+0.06, primer_y))
    

    在循环内。你会发现箭头停止绘制时 primer_y变为负值。

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

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

    而不是递减 primer_y每次通过循环时固定量,然后 primer_y无论 data 有多少项,都会自动在 0.95 到 0.0 之间调整间距。 .

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

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

关于python - wxpython-plotting 中的 Matplotlib 中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058494/

相关文章:

python - matplotlib 为二元矩阵着色

python - 如何使用输入 *.txt 文件绘制一个非常简单的条形图(Python、Matplotlib)?

python - 精细控制 Seaborn 图中的字体大小

python - 在 GPflow 2.0 中设置超参数优化范围

python - Pandas groupby 总和保持第三列

python - 为什么使用 virtualenv 时 Python 构建突然不是 Framework 构建?

python - 如何从其父级(另一个 wx.panel 对象)中删除或销毁 wx.panel?

python - 如何在 matplotlib 中绘制非正方形图形大小的圆形饼图

python - 如何将 App 参数传递给 os.system()

python - 更新单元格后MySQL返回空值