【发布时间】:2013-11-23 16:58:16
【问题描述】:
我正在尝试使用 matplotlib 的工具复制附图的样式。
基本上,我想使用 matplotlib 根据其 y 值更改曲线的颜色。
【问题讨论】:
-
尚不清楚在您的示例中设置颜色的是什么。必须有第三个值,因为颜色显然不是由
c\tau/R_0或kR_0的值设置的。
我正在尝试使用 matplotlib 的工具复制附图的样式。
基本上,我想使用 matplotlib 根据其 y 值更改曲线的颜色。
【问题讨论】:
c\tau/R_0 或kR_0 的值设置的。
您显示的图没有由图的垂直轴设置的颜色(这就是我认为的 y 值)。相反,它只是覆盖了 8 个不同的图,每个图都有不同的颜色,但没有说明颜色的含义。
这是一个看起来像你的情节的例子:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
# some fake data:
x = np.linspace(0, 2*np.pi, 1000)
fs = np.arange(1, 5.)
ys = np.sin(x*fs[:, None])
for y, f in zip(ys, fs):
plt.plot(x, y, lw=3, c=cm.hot(f/5))
如果你真的想让一行的颜色改变它的值,你必须对它进行修改,因为据我所知,任何给定的Line2D 对象只能有一种颜色。一种方法是制作散点图,其中每个点都可以有任何颜色。
x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(2*x)
plt.scatter(x,y, c=cm.hot(np.abs(y)), edgecolor='none')
注意事项:
0 和1 之间,因此如果是y.max() > 1,则通过它进行归一化:c=cm.hot(y/y.max()) 并确保它都是正值。edgecolor='none',因为默认情况下scatter 标记具有黑色轮廓,这使得它看起来不像一条均匀的线。【讨论】: