2017-10-26 22 views
1

matplotlib을 사용하여 다채로운 개별 데이터를 플롯하려고합니다.tab * builtin과 같은 요소를 사용하여 matplotlib의 색상 맵을 구성하는 중

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

어떻게 든 가능성이 있습니다 : 그려지로 tab10-like 색상 맵으로 나는 내 데이터를 가지고, tab20 및 tab20b 부품의 조합을 필요, 그러나 좋은 결과

enter image description here

거야?

답변

1

다른 색상 표의 색상을 사용하여 ListedColormap을 만들 수 있습니다.

예 : tab20c 색상 맵에서 darkorange 색상을 얻으려면 plt.cm.tab20c(4) (해당지도에서 5 번째 색상이므로)을 사용하십시오. 이 방법은 인덱스가있는 색상 맵에서만 작동합니다. 그렇지 않으면 0에서 1 사이의 값을 사용해야합니다.

이렇게 얻은 색상 목록에서 ListedColormap을 새로 만들 수 있습니다.

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) 

x = np.arange(1,7) 

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

plt.show() 
또는,
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

큰뿐만 아니라 멋진 년 Colorbar를 얻을 수 있습니다. 그동안 ListedColormap에 대해 알았지 만 나열된 색상을 정의하기 위해 내장 함수를 사용할 수 있다는 것을 알지 못했습니다. 다시 한 번 감사드립니다. – ErroriSalvo