Adding labels in pie chart wedge in bokeh
在使用散景创建饼图时,如何从数据框中添加信息?
我使用的代码来自 http://docs.bokeh.org/en/latest/docs/gallery/pie_chart.html
基本上,我想要每个国家的价值观。
您可以使用 LableSet 将文本添加到绘图中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | from math import pi import pandas as pd from bokeh.io import output_file, show from bokeh.palettes import Category20c from bokeh.plotting import figure from bokeh.transform import cumsum from bokeh.models import LabelSet, ColumnDataSource output_file("pie.html") x = { 'United States': 157, 'United Kingdom': 93, 'Japan': 89, 'China': 63, 'Germany': 44, 'India': 42, 'Italy': 40, 'Australia': 35, 'Brazil': 32, 'France': 31, 'Taiwan': 31, 'Spain': 29 } data = pd.Series(x).reset_index(name='value').rename(columns={'index':'country'}) data['angle'] = data['value']/data['value'].sum() * 2*pi data['color'] = Category20c[len(x)] p = figure(plot_height=350, title="Pie Chart", toolbar_location=None, tools="hover", tooltips="@country: @value", x_range=(-0.5, 1.0)) p.wedge(x=0, y=1, radius=0.4, start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'), line_color="white", fill_color='color', legend='country', source=data) data["value"] = data['value'].astype(str) data["value"] = data["value"].str.pad(35, side ="left") source = ColumnDataSource(data) labels = LabelSet(x=0, y=1, text='value', angle=cumsum('angle', include_zero=True), source=source, render_mode='canvas') p.add_layout(labels) p.axis.axis_label=None p.axis.visible=False p.grid.grid_line_color = None show(p) |