我在 wx.Frame 中使用 matplotlib 在某个位置绘制一些箭头和文本。箭头的数量和位置基于先前创建的数据。 我做了一些计算,但基本上是这样的:
箭头=底漆 对于每个底漆: 在位置 y - 0.05 到上一个箭头 (primer_y - 0.05) 处绘制一个箭头。 箭头的 x 位置来自数据,经过计算和缩放(知道的不是那么重要,只是现在箭头应该位于 prime_x 的位置)。
一切正常,直到我有很多箭头要绘制。例如。在我的代码示例中,数据包含 62 个箭头,其中 18 个箭头绘制正确,接下来的 3 个缺失,但文本在那里,其余的完全缺失。
有谁知道可能是什么问题吗?我已经尝试更改FigureSize,但它只是拉伸(stretch)箭头。
这是一个快速但肮脏的工作示例,数据包含在代码中: http://pastebin.com/7mQmZm2c
非常感谢任何帮助! 提前致谢! 孙燕姿
最佳答案
坚持
print((primer_x+0.06, primer_y))
在循环内。你会发现箭头停止绘制时
primer_y
变为负值。- 不要用
self.axes.annotate
绘制箭头同时标记 箭头self.fig.text
。坐标轴和图形使用不同 坐标系。改变self.fig.text
至self.axes.text
将允许您使用相同的坐标系,这将使 您可以更轻松地将文本定位在箭头下方。 - 数量太多了 代码中的硬编码数字(“魔数(Magic Number)”)。这使得它非常 很难修复,因为当一个数字改变时,其余的不会改变 以合乎逻辑的方式伴随它。如果可以用公式来定义 这些神奇数字之间的关系,你的生活将 变得容易多了。
例如,如果将 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 之间调整间距。 .如果您发现箭头被压扁(垂直),您可以展开 通过更改
figsize
来计算数字在这一行:self.fig = matplotlib.figure.Figure(figsize=(20, 30), facecolor='white')
关于python - wxpython-plotting 中的 Matplotlib 中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058494/