2017-03-24 3 views
3

私は棒グラフを作っています。色のグラデーションに応じてバーの色を赤から青まで変えたいと思います。私はデータフレームの次元を持っていて、それぞれのバーが赤色の尺度でなければならない場所を教えてくれます。私の現在の方法は、RGBの赤と青の色を線形補間することによって、これらの値をRGB色に手動で変換することですが、数値を色のスケールに自動的に変換したいのです。私はまた、それを解釈するのに役立つカラーバーの伝説を持つことができる必要があります。matplotlibで数値をカラースケールに変換するにはどうすればよいですか?

答えて

7

barchartを作成し、データフレームの値に応じてバーの色を設定するのはかなり簡単です。カラーマップと正規化インスタンスは、値をcolor引数であるmatplotlib.Axes.barによって理解される色に変換するのに役立ちます。カラーバーは、バーと同じ正規化とカラーマップを使用してScalarMappableから作成されます。

enter image description here

import matplotlib.pyplot as plt 
import matplotlib.colors 
import numpy as np; np.random.seed(0) 
import pandas as pd 

x = np.arange(12) 
y = np.random.rand(len(x))*51 
c = np.random.rand(len(x))*3+1.5 
df = pd.DataFrame({"x":x,"y":y,"c":c}) 

cmap = plt.cm.rainbow 
norm = matplotlib.colors.Normalize(vmin=1.5, vmax=4.5) 

fig, ax = plt.subplots() 
ax.bar(df.x, df.y, color=cmap(norm(df.c))) 
ax.set_xticks(df.x) 

sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm) 
sm.set_array([]) 
fig.colorbar(sm) 

plt.show() 
関連する問題