2013-10-30 2 views
2

세그먼트 당 색상이 해당 세그먼트의 빈도를 나타내는 같은 크기의 세그먼트가있는 원형 차트를 만들려면 어떻게해야합니까?Python matplotlib - 빈도를 나타내는 색상으로 파이 차트를 만드는 방법은 무엇입니까?

이것은 시계 글리프라고도합니다. 저는 원형 차트를 24 개의 세그먼트로 나누고 몇 시간 동안 몇 가지 주파수 데이터를 플롯하여 주파수가 컬러 맵을 기반으로 시간 세그먼트의 색상을 결정할 것을 목표로합니다.

데이터 (5 시간 동안의)이 같은 것입니다 :

data = [3,34,76,11,90] 

그리고 내 colourmap (mycm)입니다 :

mycm = LinearSegmentedColormap.from_list('mycm',['k','r'])] 

내가 사용하는 추측 동일한 세그먼트를 만들려면 예를 들면 :

plt.pie([1,1,1,1,1], labels=None, shadow=False, radius=0.5) 

그러나 어떻게하면 t에 따라 정의한 컬러 맵을 사용하여 이들을 색칠 할 수 있습니까? 그는 데이터의 빈도 값을 계산합니까?

미리 감사드립니다.

답변

2

필요한 코드는 아래에 있으며 Coloring slices of pie chart in matplotlib python에서 수정되었습니다. 기본적으로 각 슬라이스의 모든 슬라이스가 동일한 크기가되도록 모든 슬라이스에 대해 fracs가 있지만 색상 매개 변수를 통해 색상이 변경됩니다. 당신은 빈도 나 당신이 원할지도 모르는 것에 기초하여 색을 매핑합니다.

fracs = ones(len(data))*1/len(data) 
my_norm = matplotlib.colors.Normalize(min(data),max(data)) #this is how we will map our data 

c1 = matplotlib.colors.LinearSegmentedColormap.from_list('mycm',['k','r']) 

plt.pie(fracs, labels=None, shadow=False, radius=0.5, colors=c1(my_norm(data))) 

는 데이터의 분포에 따라, 당신은 여전히 ​​당신은 단지 몇 가지 색상을 가지고있는 것처럼 우리가 색상에 데이터 포인트를 매핑하는 선형 매핑을 사용하고 있기 때문에 보이는 파이 차트를받을 수 있습니다. 비선형 맵이 필요하면 데이터 매핑 방법 (my_norm 함수)을 변경할 수 있습니다. 예를 들어, N 색상 간의 최대 차이를 위해 색상환 주위에 동일한 거리의 색상 배열을 만들고 색상 매핑과 달리 색상을 순환시킬 수 있습니다.

관련 문제