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

如何使用表格Birth、Death两列生成matplotlib图表并解决空白图问题

问题原因

  • 你计算得到的Birth和Death都是单个标量值:你对整列数据调用sum()后得到的是单一求和结果,整列的所有行都填充了同一个常数,传入plot()时只有一组坐标点,默认无标记的折线图不会渲染单个点,就会呈现空白。
  • 死亡率计算逻辑存在括号误用:你当前写的sum(pop.column("DEATHS")/sum(pop.column("2015")))是先对每个地区的死亡数除以总人口后再求和,和你预期的「总死亡数/总人口」逻辑不符,正确写法应该把sum(pop.column("DEATHS"))用括号包起来。

解决方案

根据你的实际需求选择对应修改方案:

方案1:仅展示整体出生/死亡率的单点

如果你就是要计算全量人口的整体出生率、死亡率,用散点图或者带标记的折线图渲染单点即可:

total_pop = sum(pop.column("2015"))
# 修正计算逻辑
birth_rate = sum(pop.column("BIRTHS")) / total_pop
death_rate = sum(pop.column("DEATHS")) / total_pop

# 用散点图渲染
plots.scatter(birth_rate, death_rate, c='red', s=50)
plots.xlabel("出生率")
plots.ylabel("死亡率")
plots.show()

方案2:展示各地区的出生/死亡率分布

如果你是要统计每个地区的出生率、死亡率做对比,不需要对列求和,直接用每行的出生、死亡数计算即可:

total_pop = sum(pop.column("2015"))
# 生成每行对应地区的出生/死亡率
table = pop.with_column("Birth", pop.column("BIRTHS") / total_pop)\
           .with_column("Death", pop.column("DEATHS") / total_pop)

plots.plot(table["Birth"], table["Death"])
plots.xlabel("地区出生率")
plots.ylabel("地区死亡率")
plots.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:02