bob*_*nto 6 python plot matplotlib
我需要做一系列矢量绘图。我可以使用matplotlib的颤抖例程获取任意数量的绘图。关键是,颤动器会自动缩放每个图,但是我需要每个图中的向量都代表相同的比例。例如,如果在一个绘图中以1cm的矢量表示10 km / hr,则在所有绘图中以1cm的矢量表示10km / hr。(我真的不在乎矢量是否具体为1cm。这只是一个例子。)我想我可以通过分别为每个图调整scale参数来实现这一点。但这似乎不起作用。
例如,我在第一个图中找到最大速度mxs1
,然后对每个图执行类似的操作
mxspd = np.max(speed[n])
pylab.quiver(x,y,vx[n],vy[n],scale=mxs1/mxspd)
Run Code Online (Sandbox Code Playgroud)
但这不能充分调整向量的长度。例如,在我尝试的情况下,mxspd
大约是的一半mxs1
,因此绘图中的向量的n
长度应大约是第一个绘图中向量的一半。但是,两个图中的向量的长度几乎相同。
上面的答案先验地匹配了两个图的比例。
下面的解决方案通过从第一个图中获取自动确定的比例并将其应用于第二个图来匹配后部的比例。
这可能并不总是有效,因为它使用私人电话,但解决了我的问题。
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
x, y = np.mgrid[0:20, 0:25]
u = np.sin(2 *x * np.pi / 20)
v = np.cos(2 * y * np.pi / 25)
fig, (ax_l, ax_r) = plt.subplots(1, 2, figsize=(8, 4))
Q = ax_r.quiver(x, y, u, v, scale=None, scale_units='inches')
Q._init()
assert isinstance(Q.scale, float)
ax_l.quiver(x, y, 2*u, 2*v, scale=Q.scale, scale_units='inches')
ax_l.set_title('2x')
ax_r.set_title('1x')
Run Code Online (Sandbox Code Playgroud)
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
x, y = np.mgrid[0:20, 0:25]
u = np.sin(2 *x * np.pi / 20)
v = np.cos(2 * y * np.pi / 25)
fig, (ax_l, ax_r) = plt.subplots(1, 2, figsize=(8, 4))
ax_r.quiver(x, y, u, v, scale=5, scale_units='inches')
ax_l.quiver(x, y, 2*u, 2*v, scale=5, scale_units='inches')
ax_l.set_title('2x')
ax_r.set_title('1x')
Run Code Online (Sandbox Code Playgroud)
请参阅文档,以获取有关scale
和的解释scale_units
。
归档时间: |
|
查看次数: |
11797 次 |
最近记录: |