Pyplot/matplotlib线图 - 相同的颜色

mca*_*tis 8 python plot matplotlib

我用matplotlib/pyplot绘制一个简单的线图.在同一个图中,最多有20行.Matplotlib自动选择线条颜色.我需要用较粗的红色画出第一行.

所以我试过:

if (i==0):                       # first line
    plt.plot(x, y, 'r', lw=2.5)
else:                            # other lines
    plt.plot(x, y)
Run Code Online (Sandbox Code Playgroud)

到目前为止非常简单.第一行是正确的.但其他一条线也是红色的.怎么能避免这个?

unu*_*tbu 22

默认jet颜色映射从蓝色变为红色.每个内置色彩映射也都有一个姐妹色图,颜色的顺序相反.反转颜色映射与后缀具有相同的名称_r.因此,jet_r从红色到蓝色.

因此,您可以jet_r通过定义从色彩图中为每一行赋予唯一的颜色

color = cmap(float(i)/N)
Run Code Online (Sandbox Code Playgroud)

这里cmapjet_r颜色表.色图cmap是可调用的.传递一个浮点数时,它返回一个RGB元组.因此,如果float(i)/N是每行的0到1之间的明显浮点数,那么每一行将自动获得不同的颜色.


例如,

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
cmap = plt.get_cmap('jet_r')
N = 20
for i, n in enumerate(np.linspace(2.0, 0, N)):
    y = np.sin(x)*x**n
    color = cmap(float(i)/N)
    lw = 2.5 if i==0 else 1
    # zorder controls the order in which the lines are drawn. 
    # The line with the highest zorder lies on top.
    plt.plot(x, y, c=color, lw=lw, zorder=-i)
plt.show()
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

  • 一个令人赏心悦目的情节 (3认同)