我有一个由三个变量u、v、w组成的模型,它们随时间和空间的变化而变化。我特别关注这三个变量的比率。但是,我不想显示三个图表,每个图表一个变量,我更愿意只使用一个图表。
我的想法是使用麦克斯韦三角形(彩色三角形,请参见http://homepages.abdn.ac.uk/npmuseum/article/Maxwell/MaxTri.html)。我可以很容易地将每个变量缩放到其最大值为1。但我不知道这个想法是否可行。如果有意义,应该已经存在。
我的问题:
1. 如何将三个变量转换为代表颜色的单个值(例如,如果我有一个填充轮廓图,我希望每个网格单元格都有“它的比率”)? 2. 我可以将彩色三角形用作颜色条吗?
我试图举一个简短的例子来使其更容易理解:
函数colorTriangle不存在。但我想要类似这样的东西:如果每个变量在(i,j)处具有相同的值,则颜色应为白色(参见麦克斯韦三角形)。如果只有u,则应为绿色。如果只有v,则应为红色。如果只有w,则应为蓝色。
如果组合更复杂,则每个变量应“拉”一个颜色方向,并根据在麦克斯韦三角形中的位置选择颜色。
我的想法是使用麦克斯韦三角形(彩色三角形,请参见http://homepages.abdn.ac.uk/npmuseum/article/Maxwell/MaxTri.html)。我可以很容易地将每个变量缩放到其最大值为1。但我不知道这个想法是否可行。如果有意义,应该已经存在。
我的问题:
1. 如何将三个变量转换为代表颜色的单个值(例如,如果我有一个填充轮廓图,我希望每个网格单元格都有“它的比率”)? 2. 我可以将彩色三角形用作颜色条吗?
我试图举一个简短的例子来使其更容易理解:
import numpy as np
import matplotlib.pyplot as plt
# create three arrays for the state variables
# space is a 200x200 grid
size = 200
u = np.random.rand(size,size)
v = np.random.rand(size,size)
w = np.random.rand(size,size)
# now I could create 3 subplots and plot the spatial distribution
# for each variable
# but I want something like
col = np.zeros((200,200))
for i in range(200): # loop in x-direction
for j in range(200): # loop in y-direction
col[i,j] = colorTriangle(u[i,j],v[i,j],w[i,j])
plt.contourf(col)
函数colorTriangle不存在。但我想要类似这样的东西:如果每个变量在(i,j)处具有相同的值,则颜色应为白色(参见麦克斯韦三角形)。如果只有u,则应为绿色。如果只有v,则应为红色。如果只有w,则应为蓝色。
如果组合更复杂,则每个变量应“拉”一个颜色方向,并根据在麦克斯韦三角形中的位置选择颜色。
你明白了吗?它不一定是一个颜色三角形,但我希望在一个contourf图中有这种信息。而颜色三角形将有助于解释颜色。