matplotlib 箭袋图中箭头的不同颜色

j0pj023g  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(183)

我正在绘制一个箭头图,代码使用外部文件,如下所示:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from pylab import rcParams

data=np.loadtxt(r'data.dat')

x = data[:,0] 
y = data[:,1] 
u = data[:,2] 
v = data[:,3] 

plt.quiver(x, y, u, v, angles='xy', scale_units='xy', scale=1, pivot='mid',color='g')

数据文件基本上看起来像:
有没有一种方法可以用不同的颜色来绘制不同的箭头方向?
Ps.:我有很多更多的箭头在我的数据文件在一个不是很合乎逻辑的句子,就像我使用的一个作为例子。

slmsl1lt

slmsl1lt1#

这可能会起作用:

plt.quiver(x, y, u, v, np.arctan2(v, u), angles='xy', scale_units='xy', scale=1, pivot='mid',color='g')

请注意,plt.quiver的第五个参数是颜色。

如果你想控制颜色,你必须使用colormaps。下面是几个例子:
使用带有colors参数的色彩Map表:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import Normalize

%matplotlib inline

ph = np.linspace(0, 2*np.pi, 13)
x = np.cos(ph)
y = np.sin(ph)
u = np.cos(ph)
v = np.sin(ph)
colors = arctan2(u, v)

norm = Normalize()
norm.autoscale(colors)
# we need to normalize our colors array to match it colormap domain
# which is [0, 1]

colormap = cm.inferno
# pick your colormap here, refer to 
# http://matplotlib.org/examples/color/colormaps_reference.html
# and
# http://matplotlib.org/users/colormaps.html
# for details
plt.figure(figsize=(6, 6))
plt.xlim(-2, 2)
plt.ylim(-2, 2)
plt.quiver(x, y, u, v, color=colormap(norm(colors)),  angles='xy', 
           scale_units='xy', scale=1, pivot='mid')

你也可以像我的第一个例子一样使用第五个参数(与colors相比,它的工作方式有点不同),并更改默认的colormap来控制颜色。

plt.rcParams['image.cmap'] = 'Paired'

plt.figure(figsize=(6, 6))
plt.xlim(-2, 2)
plt.ylim(-2, 2)

plt.quiver(x, y, u, v, np.arctan2(v, u), angles='xy', scale_units='xy', scale=1, pivot='mid')

您也可以创建自己的色彩Map表,参见例如。here

相关问题