首页 > 解决方案 > matplotlib:大矢量范围的颤动图缩放

问题描述

我有一个数据集,其中包含相对较大范围的向量值,我正在使用 matplotlib 的 quiver() 函数进行绘制。范围可以合理地达到 2 个数量级(10 到 1000),但高端可能会更高一些。

我遇到的问题是我找不到正确的缩放选项来创建一个看起来合理的颤动图。我已经尝试过使用 quiver plot **kwargs('scale'、'units' 和 'scale_units'),以及规范化和/或缩放实际数据,但我找不到任何可以使鉴于我事先不知道输入的实际范围。

一个非常简单的例子:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(121)
ax.quiver((100, 75, 50), (100, 100, 100), (0, 0, 0), (1000, 100, 10), scale_units='xy', scale=1)
plt.axis('equal')
plt.grid(True)
ax2 = fig.add_subplot(122)
ax2.quiver((100, 75, 50), (100, 100, 100), (0, 0, 0), (1000, 100, 10), scale_units='xy', scale=None)
plt.axis('equal')
plt.grid(True)
ax.set_title('scale=1')
ax2.set_title('scale=None')
plt.show()

该示例仅演示了 quiver() 中的 2 个可用缩放选项,但正如您在左侧图中看到的那样,最大的力远离绘图,而在右侧绘图中,较小的力甚至在绘图上不可见。

在事先不知道实际用户输入范围的情况下,有人对如何在此处设置缩放有任何建议吗?

如果有帮助,这些位置距离已知点以英寸为单位,并且可能在 36"-200" 的范围内,而矢量是如前所述的力,可能在 10lbf 到 1000lbf 左右。

谢谢。

标签: pythonpython-3.xmatplotlib

解决方案


推荐阅读