How do I create a pie chart using Bokeh?

匿名 (未验证) 提交于 2019-12-03 03:06:01

问题:

All I'd like to do is create a pie chart. The Bokeh documentation covers a number of sophisticated charts, including a donut chart, but it doesn't seem to cover pie chart.

Is there any example of this?

Ultimately, the chart will need to be to be embedded in a webpage, so I'll need to take advantage of Bokeh's html embed capabilities.

回答1:

An example for Bokeh 0.8.1 using the bokeh.plotting interface:

from bokeh.plotting import * from numpy import pi  # define starts/ends for wedges from percentages of a circle percents = [0, 0.3, 0.4, 0.6, 0.9, 1] starts = [p*2*pi for p in percents[:-1]] ends = [p*2*pi for p in percents[1:]]  # a color for each pie piece colors = ["red", "green", "blue", "orange", "yellow"]  p = figure(x_range=(-1,1), y_range=(-1,1))  p.wedge(x=0, y=0, radius=1, start_angle=starts, end_angle=ends, color=colors)  # display/save everythin   output_file("pie.html") show(p) 

Bokeh >0.9 will correctly compute the bounding area of all glyphs, not just "pointlike" marker glyphs, and explicitly setting the ranges like this will not be required.

You can see the output (code modified to display in the IPython notebook with output_notebook) here:



回答2:

A Donut chart will return a simple pie chart if you input a pandas series rather than a dataframe. And it will display labels too!

from bokeh.charts import Donut, show import pandas as pd data = pd.Series([0.15,0.4,0.7,1.0], index = list('abcd')) pie_chart = Donut(data) show(pie_chart) 



回答3:

Thanks to the answers above for helping me as well. I want to add how to add a legend to your pie-chart as I had some trouble with that. Below is just a snippet. My piechart just had 2 sections. Thus, I just made a pie chart figure and called wedge on it twice:

import numpy as np percentAchieved  = .6 pieFigure = figure(x_range=(-1, 1), y_range=(-1, 1)) starts = [np.pi / 2, np.pi * 2 * percentAchieved + np.pi / 2] ends = [np.pi / 2+ np.pi * 2 * percentAchieved, np.pi / 2 + 2*np.pi] pieColors = ['blue', 'red'] #therefore, this first wedge will add a legend entry for the first color 'blue' and label it 'hello' pieFigure.wedge(x=0, y=0, radius=.7, start_angle=starts, end_angle=ends, color=pieColors, legend="hello") #this will add a legend entry for the 'red' color and label it 'bye'. Made radius zero to not make  #another piechart overlapping the original one pieFigure.wedge(x=0, y=0, radius=0, start_angle=starts, end_angle=ends, color=pieColors[1], legend="bye") 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!