From 5e8b66dc14a48186ab826f53222ecc845f28417c Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Wed, 10 Sep 2025 20:32:37 +0800 Subject: [PATCH] 'commit' --- Model/RuYuanZaiYuanCount.py | 85 ++++++++++++++---- .../RuYuanZaiYuanCount.cpython-310.pyc | Bin 5461 -> 6076 bytes 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/Model/RuYuanZaiYuanCount.py b/Model/RuYuanZaiYuanCount.py index beafa19..6fa92af 100644 --- a/Model/RuYuanZaiYuanCount.py +++ b/Model/RuYuanZaiYuanCount.py @@ -52,13 +52,23 @@ class RuYuanZaiYuanModel: calculated_total = enroll_data.get("urban", 0) + enroll_data.get("town", 0) + enroll_data.get("rural", 0) total_enroll.append(calculated_total / 10000) # 转换为万人 + # 添加2022年基数的粉色折线 + base_year = "2022" + # 找到2022年在years中的索引位置 + base_index = years.index(base_year) if base_year in years else 0 + # 获取2022年的总入园数作为基数 + base_value = total_enroll[base_index] if base_index < len(total_enroll) else 0 + # 创建2022年基数折线数据(2022-2024年) + base_2022_line = [] + for i, year in enumerate(years): + # 只在2022年及之后显示基数线 + if i >= base_index: + base_2022_line.append(base_value) + else: + base_2022_line.append(None) # 2022年之前不显示 + # 构建ECharts配置 option = { - # "title": { - # "text": "云南省学前教育人数统计", - # "left": "center", - # "textStyle": {"color": "#333"} - # }, "tooltip": { "trigger": "axis", "axisPointer": { @@ -71,7 +81,7 @@ class RuYuanZaiYuanModel: "borderWidth": 1 }, "legend": { - "data": ["城区", "镇区", "乡村", "总入园数"], + "data": ["城区", "镇区", "乡村", "总入园数", "2022年基数(万人)"], "top": 30, "textStyle": {"color": "#333"}, "icon": "roundRect", @@ -112,9 +122,9 @@ class RuYuanZaiYuanModel: "nameGap": 30, # 增加名称与轴的间距 "axisLabel": { "formatter": "{value} 万人", - "color": "#ee6666" + "color": "#00a859" }, - "axisLine": {"show": True, "lineStyle": {"color": "#ee6666"}}, + "axisLine": {"show": True, "lineStyle": {"color": "#00a859"}}, # 改为绿色 "axisTick": {"show": True}, "splitLine": {"show": False} } @@ -158,10 +168,25 @@ class RuYuanZaiYuanModel: "type": "line", "yAxisIndex": 1, "data": total_enroll, - "lineStyle": {"color": "#ee6666", "width": 3}, + "lineStyle": {"color": "#00a859", "width": 3}, # 改为绿色 "symbol": "circle", "symbolSize": 8, - "itemStyle": {"color": "#ee6666"} + "itemStyle": {"color": "#00a859"} # 改为绿色 + }, + # 添加2022年基数的粉色折线 + { + "name": "2022年基数(万人)", + "type": "line", + "yAxisIndex": 1, + "data": base_2022_line, + "lineStyle": {"color": "#ff9e9e", "width": 2, "type": "solid"}, + "symbol": "circle", + "symbolSize": 6, + "itemStyle": {"color": "#ff9e9e"}, + "emphasis": { + "focus": "series" + }, + "z": 5 # 确保折线图显示在柱状图之上,但在总入园数折线之下 } ], "grid": { @@ -211,6 +236,21 @@ class RuYuanZaiYuanModel: calculated_total = (urban_val + town_val + rural_val) / 10000 # 先计算总和再转换为万人 total_in_school.append(calculated_total) + # 添加2022年基数的粉色折线 + base_year = "2022" + # 找到2022年在years中的索引位置 + base_index = years.index(base_year) if base_year in years else 0 + # 获取2022年的总在园数作为基数 + base_value = total_in_school[base_index] if base_index < len(total_in_school) else 0 + # 创建2022年基数折线数据(2022-2024年) + base_2022_line = [] + for i, year in enumerate(years): + # 只在2022年及之后显示基数线 + if i >= base_index: + base_2022_line.append(base_value) + else: + base_2022_line.append(None) # 2022年之前不显示 + # 构建ECharts配置 option = { "tooltip": { @@ -225,7 +265,7 @@ class RuYuanZaiYuanModel: "borderWidth": 1 }, "legend": { - "data": ["城区", "镇区", "乡村", "总在园数"], + "data": ["城区", "镇区", "乡村", "总在园数", "2022年基数(万人)"], "top": 30, "textStyle": {"color": "#333"}, "icon": "roundRect", @@ -266,9 +306,9 @@ class RuYuanZaiYuanModel: "nameGap": 30, "axisLabel": { "formatter": "{value} 万人", - "color": "#ee6666" + "color": "#00a859" # 改为绿色 }, - "axisLine": {"show": True, "lineStyle": {"color": "#ee6666"}}, + "axisLine": {"show": True, "lineStyle": {"color": "#00a859"}}, # 改为绿色 "axisTick": {"show": True}, "splitLine": {"show": False} } @@ -312,14 +352,29 @@ class RuYuanZaiYuanModel: "type": "line", "yAxisIndex": 1, "data": total_in_school, - "lineStyle": {"color": "#ee6666", "width": 3}, + "lineStyle": {"color": "#00a859", "width": 3}, # 改为绿色 "symbol": "circle", "symbolSize": 8, - "itemStyle": {"color": "#ee6666"}, + "itemStyle": {"color": "#00a859"}, # 改为绿色 "emphasis": { "focus": "series" }, "z": 10 # 确保折线图显示在最上层 + }, + # 添加2022年基数的粉色折线 + { + "name": "2022年基数(万人)", + "type": "line", + "yAxisIndex": 1, + "data": base_2022_line, + "lineStyle": {"color": "#ff9e9e", "width": 2, "type": "solid"}, + "symbol": "circle", + "symbolSize": 6, + "itemStyle": {"color": "#ff9e9e"}, + "emphasis": { + "focus": "series" + }, + "z": 5 # 确保折线图显示在柱状图之上,但在总在园数折线之下 } ], "grid": { diff --git a/Model/__pycache__/RuYuanZaiYuanCount.cpython-310.pyc b/Model/__pycache__/RuYuanZaiYuanCount.cpython-310.pyc index 6400e734157a08ead758c6f1f44d06792236c7f5..cd15ec21be72cccb676f917eb9b2b35904c50fd9 100644 GIT binary patch delta 2225 zcmd6oTWl0n7=Y)x-COt8h0;RB0+p7E-L~|`rR_pnKnex6U_`K4`cJoGx4Uq5OE1p4 zU==Vy6LP#fxCsRjS%?vXF^VR{C-p^43@_u0iIij?O(ZeIME`%bmYCqXyP0qQbN+wM zIWx28o4f12Ztx^aOPvCKen@^ZI@kHBCn9_N*et_i8y=}EJSqR0&A1GgA)gS~j3Lk2 z4A(_5A%ZjGHr(kFqhwYb6WD2^#Bf&#R)1+s$avCrL!K3Tgd=5#rHnUYH@t>>Ol3L4 zGp8D*7e!Gx{uad`6l3s$5Bw0&MJUTj7zHs}0!yJBvdeO|m;e=*M5tUyEQb~Nt;*Tp z2}6dJ@FW%&PpK~cVtZ9ijft=t)_@ag;3-%OL8!%{A5~CPr;Av-E@#KedaQgJE7!v_ zIMZ5auR4P)_v3&p zjP1fX>QtE?8%>+CmVk#Pt3#n^drQY)UNV)`XmXP6p_4U4U*27u{srneOgKV#QQ$Wn zYbqa2VvkPgsX={sj15t~lmF(Z2qY*J|3O}24Sa=jrOO(tcu~C1S-q|cD{v7Vjl;uj zEv&oP8i@|Kx3rrI-H3vWeb(vcot4?e(@p1e7-!v?0Bx#xe`wu!52weECgY~F_#4q@ zG?vB$+qy9FNQc&;6(p)vQ^~jvd6_j(fkChqMk_bfk>v113dhr!uB8ep_T` zrF!eZSU2n>HBS*}I@7L=9~+IP^pq*iJd~PiW~BC-ynsRG6wxmt)FtEnzye#KgG9qG_$p&o$SH7RS+ON*kKiqRez!VX?Rv<5Qo|Opn!1 zf3_jIb*89u(-oF%BCm3<@+tCCX_=%*KG80@MYqJmW!KmLA-N@yzD|oaQIVv-Bw6`g z`bpYS%qV}_&InmWoN49Nw$|mtxa`GG5TixcTte3@<0GZFvl)-!v3!%ZeB)X0jo0ul z`sO71#=GDfANt1sFW&^vHvz+ozIoU1qi=kcW6n~%;G47mAK#E|8Z6(0EZ;O{(HbH2 zMH4!v85%Kah7HJ;oI55#E3_F3w4)F^P>36`W)p0NEvUjy%&5@ym`pcjY!H4-rXF2J zP7A>{=)tjip${U(>9`Yv@FL)D702OMp2wFPDm1t6Br>yur6kjqHda> zO;I>am?6AO$Piv3oF>pdFVIVxy+I%ou~!MRgx3hK6UaO4EP*UNBR96xus5lBp70)` zF35Zo`w@qH(-S-v@cJ%L&m7?*;SxU`7+CoMg_j8*60Q(FB3vcp`Oks2lJ7B01;`EM zJXGd?oF8u1`~JfYcck#59cIxEs%3{2{6}vk-xS CLO1OI delta 1556 zcmc(fO>7%Q6vw^m^~PR*#Yt=@E^TR2m)I?K>=4Ikljgg$X_``!if=WJ-^SV2A7PxN ziE(gy;DRdDW?HCJOP~lLjEX2KaG?_72AsI`vO)!^YDMlKp^5|Vt@|M)?szr7eQ)N? z%$wQ&^R4LZu&dy7Dkl70&wan}WA~S?X|v0Lt_RyFwqh$UnD17=4UOQ@1Zb*?Xf>nN z0$%Wezba=;(7Gu=+r$0G~V}T~$j)fOhBr1$ILa_CPZ{ zgDXFYAgfaoFg8@RLZuzT7`hij_rbHc)gFi#6QURv!Jsaj9D^uYF^D6(tB#Ba&p}UF zf&?bmiwPz%rVsYR0ZgqQM=UV#A0r2GM25kCkMtXp!Y~BBaszHX3?sPMD2zSae!ObU zNN@eBfQRMm0;k>Cf3xdR-Dn&XV@DwJitFx+M2Rt3Xf0|S%m+j?6ez8)sM;lPaJxN{4V%}S3>@%hh+5;1hr|ZhvFz$LJ59(_D#wc%HF0SR~ z3RzvLzo)g5$`~ywb_YvhGFX#vRds%eo#Hzj`x`M{Wtv*lr3}-cCUe!XTMRk)relRq zIfukwO#Gs=T@)35(OYZ&OS~gSM1daZZ~2n6QcCbIeaWjqGsC}XM}6fp8IidR87Pry-Z zT`-AqK8A93m0c+3DISmm{JN)8_=ey1To!Ke(@h@>aqe#RS3(jS!24kIfsOC_rvt6~ z=f1sH{q)|o&+lKk!G>vQgh02(#t0JxLmx-UGQ@a{tQQC;5L-VGI?0_OoFu$Nc$sh& zp$!QYjOi!;6k(Q-Ld>u^G7Wh%Ak#=vBkMHb3?WA-5Ecn<5{z>!lSLwBD}=LzRl*wK zEkYTgTjpmA>E$AO7o9EoOARUYA~H_4PH{$+8^?Q_T+G*GC{?$rxy6N4Q7h^~iJiml zk~!8BWala19l`}f$j#SVwl`iPe}ljYm-%Nc$K@+zzRz2|y$v_eEdEX+_Vb+A!{77X k^xP5Sk2Sm@Eu)5i^(6SF?|}RPP5g-8^~D7r_xV5h2Lqaob^rhX