[英]how to make colors in line graph fade in matplotlib and python
我有兩個人物,每個人都有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()
如果您想在顏色選擇上有更多的靈活性,那么我建議您使用colorsys
;
它具有一些非常有用的功能,可以在不同的顏色圖之間進行轉換。 http://en.wikipedia.org/wiki/HSL_and_HSV ,它可以為您提供更大的靈活性。
http://docs.python.org/library/colorsys.html
您可以像這樣使用它:
ax[1].plot(Raw_Vertex, Raw_KI, 'o-', color =colorsys.hsv_to_rgb(0,1-i/float(curves),1))
可以以更加直觀的方式輕松地將亮度,暗度和顏色更改為所需的任何位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.