fix: emoji色球→原生圆形形状·图例色块化

This commit is contained in:
大师 2026-06-09 02:51:31 +08:00
parent f86a2a8a82
commit db3d19f30d
2 changed files with 23 additions and 10 deletions

View File

@ -43,6 +43,15 @@ def kpi(l,t,w,h,num,lbl,nc=BLUE,ns=44,ls=9):
T(l,t+Inches(0.06),w,Inches(0.5),str(num),sz=ns,clr=nc,b=True,al=PP_ALIGN.CENTER)
T(l,t+Inches(0.55),w,Inches(0.18),lbl,sz=ls,clr=GRAY,al=PP_ALIGN.CENTER)
def warn_card(l,t,w,h,num,lbl,dot_color=RED,ns=28):
"""预警卡片:色球+数字+标签"""
R(l,t,w,h,fill=BG)
# 色球 (circle)
s=prs.slides[-1].shapes.add_shape(MSO_SHAPE.OVAL,l+Inches(0.25),t+Inches(0.04),Inches(0.22),Inches(0.22))
s.fill.solid(); s.fill.fore_color.rgb=dot_color; s.line.fill.background()
T(l,t+Inches(0.26),w,Inches(0.28),str(num),sz=ns,clr=dot_color,b=True,al=PP_ALIGN.CENTER)
T(l,t+Inches(0.55),w,Inches(0.18),lbl,sz=8,clr=GRAY,al=PP_ALIGN.CENTER)
def donut(l,t,w,h,vals,labels,colors):
"""原生饼图"""
cd=CategoryChartData()
@ -133,19 +142,23 @@ CARD_W=Inches(0.85); CARD_H=Inches(0.7); CARD_GAP=Inches(0.08)
CY=RY2+Inches(0.48)
warn_data=[
('5', '预警总计', RED, 36),
('0', '红色🔴', RED, 28),
('1', '橙色🟠', RED, 28),
('4', '黄色🟡', GOLD, 28),
('23', '未完成审批', GRAY, 28),
('5', '预警总计', RED, 36, None),
('0', '红色', RED, 28, RED),
('1', '橙色', RED, 28, RGBColor(0xF0,0x80,0x00)),
('4', '黄色', GOLD, 28, GOLD),
('23', '未完成审批', GRAY, 28, None),
]
for idx,(num,lbl,clr,ns) in enumerate(warn_data):
for idx,(num,lbl,clr,ns,dot) in enumerate(warn_data):
cx=MX2+Inches(0.12)+Inches(idx*(CARD_W+CARD_GAP))
kpi(cx,CY,CARD_W,CARD_H,num,lbl,nc=clr,ns=ns,ls=8)
if dot:
warn_card(cx,CY,CARD_W,CARD_H,num,lbl,dot_color=dot,ns=ns)
else:
kpi(cx,CY,CARD_W,CARD_H,num,lbl,nc=clr,ns=ns,ls=8)
# Legend right-aligned
T(MX2+Inches(4.9),CY+Inches(0.05),Inches(1.0),Inches(0.65),
'🔴 在实施未审批\n🟠 ≤30天\n🟡 ≤45天',sz=7,clr=GRAY,al=PP_ALIGN.RIGHT)
# Legend with colored rects
for j,(txt,clr) in enumerate([('在实施未审批',RED),('≤30天',RGBColor(0xF0,0x80,0x00)),('≤45天',GOLD)]):
R(MX2+Inches(4.95),CY+Inches(0.05+j*0.18),Inches(0.12),Inches(0.12),fill=clr)
T(MX2+Inches(5.1),CY+Inches(0.04+j*0.18),Inches(0.8),Inches(0.15),txt,sz=7,clr=GRAY)
# Row 2: 审批率 + 进度条
PY=RY2+Inches(1.3)