gpt4 book ai didi

python - wxpython-plotting 中的 Matplotlib 中止

转载 作者:行者123 更新时间:2023-11-30 23:50:51 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com