2014-02-27 463 views
0

我有很多不同的文件(10-20),我從x和y數據中讀取,然後繪製爲一條線。 目前我有標準的顏色,但我想使用色彩地圖代替。 我已經看了很多不同的例子,但無法正確調整我的代碼。 我希望顏色在每行之間(而不是沿着直線)使用顏色貼圖(例如gist_rainbow,即不連續的顏色貼圖)進行更改。 下圖是我目前可以實現的內容。使用顏色映射更改線條顏色

這是我曾嘗試:

import pylab as py 
import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import rc, rcParams 

numlines = 20 
for i in np.linspace(0,1, numlines): 
    color1=plt.cm.RdYlBu(1) 
    color2=plt.cm.RdYlBu(2) 

# Extract and plot data 
data = np.genfromtxt('OUZ_QRZ_Lin_Disp_Curves') 
OUZ_QRZ_per = data[:,1] 
OUZ_QRZ_gvel = data[:,0] 
plt.plot(OUZ_QRZ_per,OUZ_QRZ_gvel, '--', color=color1, label='OUZ-QRZ') 

data = np.genfromtxt('PXZ_WCZ_Lin_Disp_Curves') 
PXZ_WCZ_per = data[:,1] 
PXZ_WCZ_gvel = data[:,0] 
plt.plot(PXZ_WCZ_per,PXZ_WCZ_gvel, '--', color=color2, label='PXZ-WCZ') 
# Lots more files will be plotted in the final code 
py.grid(True) 
plt.legend(loc="lower right",prop={'size':10}) 
plt.savefig('Test') 
plt.show() 

The Image I can produce now

+0

您可能會發現有關這個問題/答案:用不同的顏色matplotlib繪製箭頭( http://stackoverflow.com/questions/18748328/plotting-arrows-with-different-color-in-matplotlib) – Schorsch

回答

1

你可以採取幾種不同的方法。在你最初的例子中,你用不同的顏色爲每一行着色。如果你能夠遍歷你想要繪製的數據/顏色,那很好。像現在這樣手動指定每種顏色,即使是20行,也要做很多工作,但想象一下,如果您有數百個或更多。 :)

Matplotlib還允許您使用自己的顏色編輯默認的「顏色循環」。考慮下面這個例子:

numlines = 10 

data = np.random.randn(150, numlines).cumsum(axis=0) 
plt.plot(data) 

這給出了默認的行爲,並導致:如果你想使用默認Matplotlib顏色表

enter image description here

,你可以用它來獲取顏色值。

# pick a cmap 
cmap = plt.cm.RdYlBu 

# get the colors 
# if you pass floats to a cmap, the range is from 0 to 1, 
# if you pass integer, the range is from 0 to 255 
rgba_colors = cmap(np.linspace(0,1,numlines)) 

# the colors need to be converted to hexadecimal format 
hex_colors = [mpl.colors.rgb2hex(item[:3]) for item in rgba_colors.tolist()] 

然後,您可以顏色列表分配到從Matplotlib的color cycle設置。

mpl.rcParams['axes.color_cycle'] = hex_colors 

這種變化之後的任何情節會自動通過這些顏色週期:

plt.plot(data) 

enter image description here

+0

嗨Rutger,我遇到了麻煩:'hex_colors = [mpl.colors.rgb2hex(item [ :3])爲rgba_colors.tolist()中的項目]'我得到一個錯誤消息e'of'hex_colors = [plt.colors.rgb2hex(item [:3])for item in rgba_colors.tolist()] AttributeError:'function'object has no attribute'rgb2hex''我不知道如何解決這個問題? – Kg123

+0

嘗試像導入matplotlib:'import matplotlib as mpl'。 –