由传染媒介方向的Colormap在使用颤抖的Python

时间:2017-02-28 13:31:46

标签: python python-2.7 matplotlib

我正在尝试使用quiver在python 2.7中按照方向对矢量进行颜色映射。我从文本文件中读取数据,获取每个向量的角度并进行标准化,使所有内容都在[0,1]之间。但是,当我去绘制颜色时,它会出现相同的颜色表示两个不同的方向。

此外,我可能不会将数据绘制在网格上,而是绘制为具有速度矢量的点。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as col

import sys

data = np.loadtxt("" + str(sys.argv[1]) + "")
x_dat = data[:,0]
y_dat = data[:,1]
vx_dat = data[:,2]
vy_dat = data[:,3]

rad = np.arctan(vy_dat/vx_dat) * 2
theta = np.degrees(rad)

for i in range(len(theta)):
    if theta[i] < 0:
        theta[i] += 360
    theta[i] /= 360

我意识到我不需要转换为学位。然后我将我的载体标准化:

N = np.array([])

for i in range(len(vx_dat)):
    N = np.append(N,np.sqrt(vx_dat[i]**2 + vy_dat[i]**2))
    vx_dat[i] = vx_dat[i]/N[i]
    vy_dat[i] = vy_dat[i]/N[i]

最后,我绘制了它:

q = plt.quiver(x_dat, y_dat, vx_dat, vy_dat, theta, units='dots', angles='xy', cmap = 'Blues')

'theta'应根据方向映射每个矢量的颜色。然而,这就是我的结果(我放大了所以它更容易看到):

如何解决此问题,以便每个方向都获得唯一颜色?

1 个答案:

答案 0 :(得分:0)

建议使用np.arctan2(V,U)函数计算颜色值。要返回独特的颜色,请使用不同的颜色贴图,&#39;蓝调&#39;只能返回不同深浅的蓝色。循环彩色地图,如&#39; hsv&#39;更合适。请尝试以下方法:

q = plt.quiver(x_dat, y_dat, vx_dat, vy_dat, np.arctan2(vy_dat, vx_dat), units='dots', angles='xy', cmap = 'hsv')