【matplotlib】グラデーションカラーマップの作成方法【python】

matplotlibにはcolormapが用意されているが、せっかくなので自分で作成したくなった。色をRGBA形式に変換すると足し算引き算が出来るので、それをプロットするといいらしい。

試すとこんな感じ。ちょっとした色の調整には便利です。赤→白→青みたいな変化をするものは出来ないので、その辺はデフォルトのものは便利ですね。

 

start_color = "#ffffff"

end_color =  "#000000"

 

start_color = "#eeeeee"

end_color = "#5555ff"

 

start_color = "#ffff55"

end_color = "#55ff55"



import
numpy as np import matplotlib.pyplot as plt import matplotlib.colors as mcolors # ユーザーによって指定されるパラメータ start_color = '#aaaaaa' # 初期色 end_color = '#333333' # 最終色 n_intervals = 10 # グラデーションの間隔 def create_custom_cmap(start_color, end_color, n_intervals): # グラデーションを生成 rgba_initial = np.array(mcolors.to_rgba(start_color))#初期色をRGBA形式に rgba_end = np.array(mcolors.to_rgba(end_color)) #最終色をRGBA形式に colors = [rgba_initial * (1 - i) + rgba_end * i for i in np.linspace(0, 1, n_intervals)]#初期色と最終色を混ぜる return mcolors.LinearSegmentedColormap.from_list("custom_cmap", colors) # カスタムカラーマップの作成 custom_cmap = create_custom_cmap(start_color, end_color, n_intervals) # カラーマップのデモンストレーション gradient = np.linspace(0, 1, 256) gradient = np.vstack((gradient, gradient)) plt.figure(figsize=(6, 2)) plt.imshow(gradient, aspect='auto', cmap=custom_cmap) plt.show()