2013-03-29 155 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