箭头的不同的颜色在颤抖剧情

Mac*_*Mac 5 python matplotlib

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

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')
Run Code Online (Sandbox Code Playgroud)

数据文件基本上如下:

0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1
Run Code Online (Sandbox Code Playgroud)

这会产生一个看起来像的情节

在此输入图像描述

有没有办法用不同的箭头方向绘制不同的颜色?

Ps.:我的数据文件中有更多的箭头,这是一个不太合乎逻辑的句子,就像我使用的那样.

Ily*_*rov 14

这可能是诀窍:

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

请注意,第五个参数plt.quiver是一种颜色. 彩色箭头


UPD.如果要控制颜色,则必须使用色彩映射.以下是几个例子:

使用带有colors参数的colormap :

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')
Run Code Online (Sandbox Code Playgroud)

不同的色彩图

你也可以像我的第一个例子那样坚持第五个参数(它的工作方式有点不同colors),并更改默认的颜色图来控制颜色.

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')
Run Code Online (Sandbox Code Playgroud)

配对色图

您也可以创建自己的色彩映射,请参见此处.

  • 通常y坐标(在这种情况下为"v")作为第一个参数传递给`arctan2`,但这并不重要.@Mac,arctangent计算箭头矢量和-pi与pi之间的正x轴之间的角度(以弧度表示). (2认同)
  • 由于您需要的颜色取决于箭头的角度,您必须以某种方式计算角度.为此,我使用了函数*atan2*(`numpy.arctan2`),它使用向量的坐标来计算角度(以弧度表示).有关详细信息,请参阅https://en.wikipedia.org/wiki/Atan2. (2认同)