You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair分面饼图(Pie Chart)标签无法正常渲染问题求助

分面饼图标签堆叠问题解决办法

你遇到的标签挤在一起的问题,是因为文本标记的角度定位没跟上分面的分组逻辑——原代码里文本直接用原始的v值当角度,没按每个分面里的扇区计算中心位置。

修正后的完整代码

import pandas as pd
import altair as alt

df = pd.read_csv("input.csv", keep_default_na=False)

base = alt.Chart(df).encode(
    theta=alt.Theta(field="v", type="quantitative"),
    color=alt.Color(field="k", type="nominal")
)

pie = base.mark_arc(outerRadius=100)
# 核心改动:给文本的theta编码加aggregate='mean',自动计算每个扇区的中心角度
text = base.mark_text(radius=115, fill="black").encode(
    theta=alt.Theta(field="v", type="quantitative", aggregate='mean'),
    text=alt.Text(field="v", type="quantitative", format=",.1f")
)

alt.layer(pie, text).facet(column='label')

为什么这么改

  • 原代码里文本的theta直接用原始数值,相当于把所有分面的数值混在一起算角度,自然会堆在同一个位置。
  • 加上aggregate='mean'后,Altair会针对每个分面、每个类别(k)单独计算扇形的中心角度,标签就能精准对应到每个扇区外侧了。
  • 另外alt.layer不需要重复传data=df,base已经绑定了数据,传了反而多余。

测试用数据

f,n,k,v,label
1,3,0-5 %,99.7289972899729,Forest
1,4,5-10 %,0.27100271002710025,Forest
0,1,0-5 %,100.0,Non-Forest
254,5,0-5 %,99.0077177508269,unclassifiable
254,6,5-10 %,0.9922822491730982,unclassifiable

内容的提问来源于stack exchange,提问作者aborruso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:25:29