Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中,线条颜色是否随线条图的数据索引而变化?_Python_Matplotlib_Plot_Line_Colorbar - Fatal编程技术网

Python 在matplotlib中,线条颜色是否随线条图的数据索引而变化?

Python 在matplotlib中,线条颜色是否随线条图的数据索引而变化?,python,matplotlib,plot,line,colorbar,Python,Matplotlib,Plot,Line,Colorbar,所以我有一个2D数据数组,在同一个轴上生成了许多时间序列的图。目前,每一行的颜色只是循环出现,并不意味着什么 我想以某种方式将每一行的颜色映射到其数据的索引上,这样一组索引较低的数据显示为红色,然后在索引较高时褪色为蓝色 为了澄清这一点,每一条线的颜色应始终相同,不随时间而褪色。差异应该在每行之间 谢谢 绘制(x,y,'r')红线 绘制(x,y,'b')蓝线 需要更多颜色才能过一个像样的圣诞节吗?看 更新: 正如您所问,行太多,无法手动设置颜色。那么这个呢: from matplotlib.

所以我有一个2D数据数组,在同一个轴上生成了许多时间序列的图。目前,每一行的颜色只是循环出现,并不意味着什么

我想以某种方式将每一行的颜色映射到其数据的索引上,这样一组索引较低的数据显示为红色,然后在索引较高时褪色为蓝色

为了澄清这一点,每一条线的颜色应始终相同,不随时间而褪色。差异应该在每行之间

谢谢

绘制(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)