Python 在matplotlib中,线条颜色是否随线条图的数据索引而变化?
所以我有一个2D数据数组,在同一个轴上生成了许多时间序列的图。目前,每一行的颜色只是循环出现,并不意味着什么 我想以某种方式将每一行的颜色映射到其数据的索引上,这样一组索引较低的数据显示为红色,然后在索引较高时褪色为蓝色 为了澄清这一点,每一条线的颜色应始终相同,不随时间而褪色。差异应该在每行之间 谢谢Python 在matplotlib中,线条颜色是否随线条图的数据索引而变化?,python,matplotlib,plot,line,colorbar,Python,Matplotlib,Plot,Line,Colorbar,所以我有一个2D数据数组,在同一个轴上生成了许多时间序列的图。目前,每一行的颜色只是循环出现,并不意味着什么 我想以某种方式将每一行的颜色映射到其数据的索引上,这样一组索引较低的数据显示为红色,然后在索引较高时褪色为蓝色 为了澄清这一点,每一条线的颜色应始终相同,不随时间而褪色。差异应该在每行之间 谢谢 绘制(x,y,'r')红线 绘制(x,y,'b')蓝线 需要更多颜色才能过一个像样的圣诞节吗?看 更新: 正如您所问,行太多,无法手动设置颜色。那么这个呢: from matplotlib.
绘制(x,y,'r')
红线
绘制(x,y,'b')
蓝线
需要更多颜色才能过一个像样的圣诞节吗?看
更新: 正如您所问,行太多,无法手动设置颜色。那么这个呢:
from matplotlib.pyplot import *
x = list(range(10))
amount = 20
for i in range(amount):
y = [j-i for j in x]
c = [float(i)/float(amount), 0.0, float(amount-i)/float(amount)] #R,G,B
plot(x, y, color=c)
show()
它给出:
这里我使用rgb颜色获得200种不同颜色的数组。我没有时间按强度对它们进行排序,但是做一些数组的打印输出,您可能会知道如何进行排序。一个想法是按(已排序的)元组之和的索引进行排序
提供通常,您可以将颜色贴图传递给绘图函数,但也可以将数字或数组传递给颜色贴图,并获得相应的颜色 因此,要根据变量为每行着色,请执行以下操作:
numlines = 20
for i in np.linspace(0,1, numlines):
plt.plot(np.arange(numlines),np.tile([i],numlines), linewidth=4, color=plt.cm.RdYlBu(i))
如果有人仍在寻找一种方法,在不使用
散点的情况下,使用某种颜色贴图沿路径为曲线上色,我认为更好的方法是将其分割为多个部分,并调用颜色贴图
import matplotlib.pyplot as plt
import numpy as np
def plot_colored(x, y, c, cmap=plt.cm.jet, steps=10):
c = np.asarray(c)
c -= c.min()
c /= c.max()
it=0
while it<с.size-steps:
x_segm = x[it:it+steps+1]
y_segm = y[it:it+steps+1]
c_segm = cmap( c[it+steps//2] )
plt.plot(x_segm, y_segm, c=c_segm)
it += steps
# sample track
t = np.r_[0:10:1000j]
x = t**.25*np.sin(2*np.pi*t)
y = t**.25*np.cos(2*np.pi*t)
plt.figure()
plot_colored(x, y, t)
导入matplotlib.pyplot作为plt
将numpy作为np导入
def绘图(x、y、c、cmap=plt.cm.jet,步长=10):
c=np.asarray(c)
c-=c.min()
c/=c.max()
它=0
是的,但我有很多时间序列集——大约200套。我不能手动检查并设置每一个的颜色。我需要一种方法来获取它的索引,并从颜色图中获取颜色。@Catherinegorgia当然。等一下。
import matplotlib.pyplot as plt
import numpy as np
def plot_colored(x, y, c, cmap=plt.cm.jet, steps=10):
c = np.asarray(c)
c -= c.min()
c /= c.max()
it=0
while it<с.size-steps:
x_segm = x[it:it+steps+1]
y_segm = y[it:it+steps+1]
c_segm = cmap( c[it+steps//2] )
plt.plot(x_segm, y_segm, c=c_segm)
it += steps
# sample track
t = np.r_[0:10:1000j]
x = t**.25*np.sin(2*np.pi*t)
y = t**.25*np.cos(2*np.pi*t)
plt.figure()
plot_colored(x, y, t)