Skip to main content
 首页 » 编程设计

python之如何使线图中的颜色在 matplotlib 和 python 中淡出

2025年05月04日14dyllove98

我有两个图,每个图都有 3 个子图。在每个子图中,使用 for 循环有 20 条不同的曲线,代表 20 个步骤。我怎样才能让曲线的颜色逐渐变淡?就像我下面的代码一样,顶部的子图 (311) 有 20 条蓝色曲线……我怎样才能让第一步变成深蓝色,然后让蓝色逐渐变淡,直到最后一步变成浅蓝色?另外,如何让这两个数字同时出现在屏幕上?现在,我必须手动关闭第一个图形才能弹出第二个图形。

from pylab import * 
for raw_step in raw: 
    raw_step = zip(*raw_step) 
    Raw_Vertex, Raw_KI, Raw_KII, Raw_KIII = raw_step[0], raw_step[1], raw_step[2], raw_step[3] 
 
    subplot(311) 
    plot(Raw_Vertex, Raw_KI, 'bo-') 
    grid(True) 
    title('Raw SIFs') 
    ylabel('K_I') 
 
    subplot(312) 
    plot(Raw_Vertex, Raw_KII, 'go-') 
    grid(True) 
    ylabel('K_II') 
 
    subplot(313) 
    plot(Raw_Vertex, Raw_KIII, 'ro-') 
    grid(True) 
    xlabel('Vertex') 
    ylabel('K_III') 
 
show() 
 
 
for mls_step in mls: 
    mls_step = zip(*mls_step) 
    MLS_Vertex, MLS_KI, MLS_KII, MLS_KIII = mls_step[0], mls_step[1], mls_step[2], mls_step[3] 
 
    subplot(311) 
    plot(MLS_Vertex, MLS_KI, 'bo-') 
    grid(True) 
    title('MLS SIFs') 
    ylabel('K_I') 
 
    subplot(312) 
    plot(MLS_Vertex, MLS_KII, 'go-') 
    grid(True) 
    ylabel('K_II') 
 
    subplot(313) 
    plot(MLS_Vertex, MLS_KIII, 'ro-') 
    grid(True) 
    xlabel('Vertex') 
    ylabel('K_III') 
 
show() 

请您参考如下方法:

要获得浅蓝色阴影,请使用

blues = plt.get_cmap('Blues')  # this returns a colormap 
color = blues(1 - float(i)/(len(raw)-1)) # blues(x) returns a color for each x between 0.0 and 1.0 

要并排放置子图,请使用 fig.add_subplots(row, columns, n) 定义 6 个轴。

fig = plt.figure() 
ax[1] = fig.add_subplot(3, 2, 1) # 3x2 grid, 1st plot 
... 
ax[6] = fig.add_subplot(3, 2, 6) # 3x2 grid, 6th plot 

import matplotlib.pyplot as plt 
import numpy as np 
 
raw = range(20) 
mls = range(20) 
ax = {} 
blues = plt.get_cmap('Blues') 
reds = plt.get_cmap('Reds') 
greens = plt.get_cmap('Greens') 
 
fig = plt.figure() 
 
ax[1] = fig.add_subplot(3, 2, 1) 
ax[1].set_title('Raw SIFs') 
ax[1].grid(True) 
ax[1].set_ylabel('K_I') 
 
ax[3] = fig.add_subplot(3, 2, 3) 
ax[3].grid(True) 
ax[3].set_ylabel('K_II') 
 
ax[5] = fig.add_subplot(3, 2, 5) 
ax[5].grid(True) 
ax[5].set_xlabel('Vertex') 
ax[5].set_ylabel('K_III') 
 
ax[2] = fig.add_subplot(3, 2, 2) 
ax[2].set_title('MLS SIFs') 
ax[2].grid(True) 
ax[2].set_ylabel('K_I') 
 
ax[4] = fig.add_subplot(3, 2, 4) 
ax[4].grid(True) 
ax[4].set_ylabel('K_II') 
 
ax[6] = fig.add_subplot(3, 2, 6) 
ax[6].grid(True) 
ax[6].set_xlabel('Vertex') 
ax[6].set_ylabel('K_III') 
 
for i, raw_step in enumerate(raw): 
    Raw_Vertex = np.arange(10) 
    Raw_KI = Raw_Vertex*(i+1) 
    Raw_KII = Raw_Vertex*(i+1) 
    Raw_KIII = Raw_Vertex*(i+1) 
    ax[1].plot(Raw_Vertex, Raw_KI, 'o-', color = blues(1 - float(i)/(len(raw)-1))) 
    ax[3].plot(Raw_Vertex, Raw_KII, 'o-', color = greens(1 - float(i)/(len(raw)-1))) 
    ax[5].plot(Raw_Vertex, Raw_KIII, 'o-', color = reds(1 - float(i)/(len(raw)-1))) 
 
for i, mls_step in enumerate(mls): 
    MLS_Vertex = np.arange(10) 
    MLS_KI = MLS_Vertex**2*(i+1) 
    MLS_KII = MLS_Vertex**2*(i+1) 
    MLS_KIII = Raw_Vertex**2*(i+1) 
 
    ax[2].plot(MLS_Vertex, MLS_KI, 'o-', color = blues(1 - float(i)/(len(mls)-1))) 
    ax[4].plot(MLS_Vertex, MLS_KII, 'o-', color = greens(1 - float(i)/(len(mls)-1))) 
    ax[6].plot(MLS_Vertex, MLS_KIII, 'o-', color = reds(1 - float(i)/(len(mls)-1))) 
 
plt.show()