2017-10-26 27 views
1

matplotlibを使用してカラフルな離散データをプロットしようとしています。tab * builtinのような要素を使ってmatplotlibのカラーマップを構成する

1->tab20darkblue 
2->tab20lightblue 
3->tab20cOrange1 
4->tab20cOrange2 
5->tab20cOrange3 
6->tab20cOrange4 

は何とかその可能です:として私はしかし、私は私のデータを持っているために、tab20とtab20b部品の組み合わせが必要になる素敵な結果

enter image description here

を取得tab10-likeカラーマップで をプロット?

答えて

1

他のカラーマップの色からListedColormapを作成できます。

たとえば、tab20cカラーマップからdarkorangeの色を取得するには、plt.cm.tab20c(4)(これはマップの5番目の色です)を使用します。これは、インデックス付きのカラーマップでのみ有効です。それ以外の場合は、0から1の間の値を使用する必要があります。

このようにして得られた色のリストから、新しいListedColormapを作成できます。

import matplotlib.pyplot as plt 
import matplotlib.colors 
import numpy as np 

colors = [plt.cm.tab20(0),plt.cm.tab20(1),plt.cm.tab20c(4), 
      plt.cm.tab20c(5),plt.cm.tab20c(6),plt.cm.tab20c(7)] 

cmap=matplotlib.colors.ListedColormap(colors) 

x = np.arange(1,7) 

plt.scatter(x,x,c=x, s=100, cmap=cmap, vmin=1, vmax=7) 

plt.show() 

enter image description here

あるいは、同様に素敵なカラーバーを得るために、

import matplotlib.pyplot as plt 
import matplotlib.colors 
import numpy as np 

colors = [plt.cm.tab20(0),plt.cm.tab20(1),plt.cm.tab20c(4), 
      plt.cm.tab20c(5),plt.cm.tab20c(6),plt.cm.tab20c(7)] 

cmap=matplotlib.colors.ListedColormap(colors) 
norm = matplotlib.colors.BoundaryNorm(np.arange(1,8)-0.5,len(colors)) 

x = np.arange(1,7) 

sc = plt.scatter(x,x,c=x, s=100, cmap=cmap, norm=norm) 
plt.colorbar(sc, ticks=x) 

plt.show() 

enter image description here

+0

素晴らしいです。その間、私はListedColormapについて発見しましたが、リストされたColorを定義するために組み込み関数を使用できることはわかりませんでした。再度、感謝します – ErroriSalvo

関連する問題