可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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")