根据x值改变颜色的python绘图线

时间:2017-08-01 11:19:07

标签: python matplotlib colors

我正在生成变量的概率分布函数,即温度:

enter image description here

我将制作几个温度PDF演变的图。 出于这个原因,我想将绘图的颜色(彩虹式)与温度分布的峰值相关联。 通过这种方式,仅通过查看颜色就可以很容易地将温度的平均值相关联。 这是我为编写PDF演变图而编写的代码:

from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import seaborn as sns
from scipy.stats import gaussian_kde


my_file = 'tas/tas.nc'
fh = Dataset(my_file, mode='r')
lons = (fh.variables['rlon'][:])
lats = (fh.variables['rlat'][:])
t = (fh.variables['tas'][:])-273
step = len(t[:,0,0])

t_units = fh.variables['tas'].units
fh.close()

len_lon = len(t[0,0,:])
len_lat = len(t[0,:,0])
len_tot = len_lat*len_lon

temperature = np.zeros(len_tot)

for i in range(step):    
   temperature=t[i,:,:]
   temperature_array = temperature.ravel()

   density = gaussian_kde(temperature_array)
   xs = np.linspace(-80,50,200)
   density.covariance_factor = lambda : .25
   density._compute_covariance()

   plt.title(str(1999+i))
   plt.xlabel("Temperature (C)")
   plt.ylabel("Frequency")

   plt.plot(xs,density(xs))
   plt.savefig('temp_'+str(i))

1 个答案:

答案 0 :(得分:1)

因为问题是缺少工作片段,所以我不得不提出一些样本数据。这将创建三个数据集,其中每个数据集根据其最大值在蓝色(冷)和红色(热)之间用特定颜色着色。

import matplotlib.pyplot as plt
import random
from colour import Color

nrange = 20
mydata1 = random.sample(range(nrange), 3)
mydata2 = random.sample(range(nrange), 3)
mydata3 = random.sample(range(nrange), 3)

colorlist = list(Color('blue').range_to(Color('red'), nrange))

# print(mydata1) print(mydata2) print(mydata3)

plt.plot(mydata1, color='{}'.format(colorlist[max(mydata1)]))
plt.plot(mydata2, color='{}'.format(colorlist[max(mydata2)]))
plt.plot(mydata3, color='{}'.format(colorlist[max(mydata3)]))
plt.show()