Python Bokeh饼图/油炸圈饼图上的奇怪标签

Python Bokeh饼图/油炸圈饼图上的奇怪标签,python,pandas,bokeh,Python,Pandas,Bokeh,下面是对这个问题的回答: 我正在尝试将标签添加到Bokeh图表中,以便用户可以查看数据值。出于某些原因,图表呈现如下所示: 我不知道为什么会这样。我试着注释掉z变量,看看这是否有区别。。事实并非如此 这是我的密码: import os import pandas as pd import pyodbc from bokeh.plotting import figure, show from bokeh.io import export_png from bokeh.models import

下面是对这个问题的回答:

我正在尝试将标签添加到Bokeh图表中,以便用户可以查看数据值。出于某些原因,图表呈现如下所示:

我不知道为什么会这样。我试着注释掉z变量,看看这是否有区别。。事实并非如此

这是我的密码:

import os
import pandas as pd
import pyodbc
from bokeh.plotting import figure, show
from bokeh.io import export_png
from bokeh.models import LabelSet, ColumnDataSource
from bokeh.palettes import Category20
import matplotlib as plt
from math import pi
from bokeh.transform import cumsum

lst = ['On_Time', 'All'] 

lst2 = [8, 85] 

df = pd.DataFrame(list(zip(lst, lst2)), 
               columns =['Column', 'Value']) 
df 

df['angle'] = df['value']/df['value'].sum() * 2*pi
df['angle']

df['color'] = ['#084594', '#2171b5']

#z=110*(df['value']/df['value'].sum())
#df['value']=z
#df

p = figure(plot_height=350, title="", toolbar_location=None,
           tools="", x_range=(-.5, .5))

p.annular_wedge(x=0, y=1,  inner_radius=0.15, outer_radius=0.25, direction="anticlock",
                start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
        line_color="white", fill_color='color', legend='column', source=df)

df["value"] = df['value'].astype(str)
df["value"] = df["value"].str.pad(35, side = "left")
source = ColumnDataSource(df)

labels = LabelSet(x=0, y=1, text='value', level='glyph',
        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)
标签位于“下方”,因为您已设置

level='glyph'
在对
标签集的调用中
。通常没有太多的原因干扰默认渲染级别。如果删除此项,标签将以注释(如
LabelSet
)的方式显示在“顶部”


还要注意另一个答案用于定位标签对齐的“str padding”。这有点粗糙,但还可以使用。浏览者浏览器之间的字体差异可能会产生微小的差异。另一种方法是计算实际的、精确的x、y位置,这些位置围绕您希望标签所在的圆

与其连接到数据库(没有人可以访问),不如重写问题以包含硬编码的数据框架。@PaulH我刚刚添加了一个片段来显示数据框架建议是使代码样本本身完整且可运行,以便其他人可以直接调查。@bigreddot明白