2016-09-17 57 views
0

上控制顏色我使用背景虛化來創建bokeh.charts.Donut一系列餅圖的。這些圖表基於相同DataFrame的子集,並且都具有相同的類別標籤。我想確保在不同的圖表中以相同的顏色顯示相同的類別,但我一直無法找出控制顏色的一致方式。背景虛化:圓環圖

目前我正在按照標籤對我的輸入數據框進行排序,並將相同的顏色數組傳遞給Donutpalette屬性。這仍然無法按預期工作。代碼如下:

main_colors = ['#10A400','#DB5E11','#C8C500','#CF102E','#00AFA8','#82BC00','#A40D7A','#FF7100','#1349BB'] 


#split out youth health problems 
for_youth_health = detailed_assessment_safety.loc[detailed_assessment_safety.youth_health_prob.notnull()] 
youth_health_issues = pd.DataFrame(for_youth_health.youth_health_prob.str.split(' ').tolist()) 

for col in youth_health_issues.columns: 
    newcol = 'youth_health_prob_' + str(col) 
    youth_health_issues = youth_health_issues.rename(columns={col:newcol}) 

youth_health_trans = pd.melt(youth_health_issues) 
youth_health_trans = youth_health_trans.loc[youth_health_trans.value.notnull()] 

youth_health_trans['issue_text'] = youth_health_trans.value.map(map_health_issues) 
youth_health_trans.drop('value',axis=1,inplace=True) 
youth_health_trans.sort_values(by='issue_text',ascending=True,inplace=True) 

#pie of youth health issues 

youth_health_issues = Donut(youth_health_trans,label='issue_text', 
          values='variable',agg='count',plot_width=plot_width, 
          plot_height=plot_height,title='Reported Youth Health Issues', 
          color=main_colors) 

hover = HoverTool(point_policy='follow_mouse') 
hover.tooltips = [('Number Reported','@values'),('Health Issue','@issue_text')] 
youth_health_issues.add_tools(hover) 

#split out adult health problems 
for_adult_health = detailed_assessment_safety.loc[detailed_assessment_safety.adult_health_prob.notnull()] 
adult_health_issues = pd.DataFrame(for_adult_health.adult_health_prob.str.split(' ').tolist()) 

for col in adult_health_issues.columns: 
    newcol = 'adult_health_prob_' + str(col) 
    adult_health_issues = adult_health_issues.rename(columns={col:newcol}) 

adult_health_trans = pd.melt(adult_health_issues) 
adult_health_trans = adult_health_trans.loc[adult_health_trans.value.notnull()] 

adult_health_trans['issue_text'] = adult_health_trans.value.map(map_health_issues) 
adult_health_trans.drop('value',axis=1,inplace=True) 
adult_health_trans.sort_values(by='issue_text',ascending=True,inplace=True) 

#pie of adult health issues 

adult_health_issues = Donut(adult_health_trans,label='issue_text', 
          values='variable',agg='count',plot_width=plot_width, 
          plot_height=plot_height,title='Reported Adult Health Issues', 
          palette=main_colors) 

hover = HoverTool(point_policy='follow_mouse') 
hover.tooltips = [('Number Reported','@values'),('Health Issue','@issue_text')] 
adult_health_issues.add_tools(hover) 

什麼是同一類別的圓環圖映射到多個圖表顏色的正確方法?我的另一個想法是在DataFrame中插入一個將標籤值映射到顏色的列,然後將該列作爲參數傳遞給Donut,但我無法做到這一點。任何幫助深表感謝。

回答

1

經過一番實驗後發現,當您將顏色數組傳遞給參數palette參數Donut時,顏色會根據按照字母順序排列的切片名稱與圓環切片相關聯。因此,您的palette顏色數組中的第一個顏色將與按字母順序排名的切片相關聯,等等。