2013-03-29 77 views
3

我正在使用matplotlib的颤抖来绘制矢量字段。我想 更改每个箭头的粗细大小,具体取决于产生矢量场的特定箭头的数据的数量。因此 我正在寻找的不是箭头尺寸的一般比例变换,而是 用于自定义箭头的箭头厚度的一个接一个的方式。 这可能吗?你可以帮我吗?使用matplotlib颤抖更改箭头的大小

回答

8

linewidths参数为plt.quiver控制箭头的粗细。如果您将值传递给一维数组,则每个箭头的厚度都会不同。

例如,

widths = np.linspace(0, 2, X.size) 
plt.quiver(X, Y, cos(deg), sin(deg), linewidths=widths) 

创建线宽从0增长到2


import matplotlib.pyplot as plt 
import numpy as np 
sin = np.sin 
cos = np.cos 

# http://stackoverflow.com/questions/6370742/#6372413 
xmax = 4.0 
xmin = -xmax 
D = 20 
ymax = 4.0 
ymin = -ymax 
x = np.linspace(xmin, xmax, D) 
y = np.linspace(ymin, ymax, D) 
X, Y = np.meshgrid(x, y) 
# plots the vector field for Y'=Y**3-3*Y-X 
deg = np.arctan(Y ** 3 - 3 * Y - X) 
widths = np.linspace(0, 2, X.size) 
plt.quiver(X, Y, cos(deg), sin(deg), linewidths=widths) 
plt.show() 

产生

enter image description here

+0

谢谢你了,它的作品! – SirC

+1

如果您指定不是您的线条颜色的脸部颜色,这会中断。改为使用'width'关键字。 – kilojoules