楼主: 21797_web
393 1

[宏观经济指标] 基于pyecharts的可视化图形实战:动态GDP柱状图绘制 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-11-23
最后登录
2018-11-23

楼主
21797_web 发表于 2025-12-12 11:44:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

列表的sort方法详解

在处理GDP数据时,排序是一个关键步骤。因此,首先需要了解Python中列表的sort方法的基本用法及其不同实现方式。

使用带名函数进行排序

当对嵌套列表进行排序时,可以通过定义一个明确的函数来指定排序依据。例如,以下代码按照内层列表的第二个元素(数值)进行降序排列:

my_list = [["a", 33], ["b", 44], ["c", 55]]

def choose_sort_key(element):
    return element[1]

my_list.sort(key=choose_sort_key, reverse=True)
print(my_list)

使用lambda匿名函数进行排序

为了简化代码,可以使用lambda表达式替代命名函数,实现相同的功能:

my_list = [["a", 33], ["b", 44], ["c", 55]]
my_list.sort(key=lambda element: element[1], reverse=True)
print(my_list)

数据读取与预处理

接下来是原始数据的加载和结构化处理。原始文件为CSV格式,存储了多年全球各国的GDP数据。

f = open("C:/Users/EDY/Desktop/1960-2019全球GDP数据.csv", "r", encoding="ANSI")
data_in_lines = f.readlines()
f.close()

# 移除表头行
data_in_lines.pop(0)

# 构建字典结构:{年份: [[国家, GDP], ...]}
data_dict = {}
for line in data_in_lines:
    parts = line.strip().split(",")
    year = int(parts[0])
    country = parts[1]
    GDP = float(parts[2])

    # 若该年份尚未在字典中,则初始化为空列表
    if year not in data_dict:
        data_dict[year] = []
    data_dict[year].append([country, GDP])

print(data_dict)

注意:上述操作中,通过判断键是否存在来避免重复初始化,提升了程序的鲁棒性。同时需确保所有代码块保持正确的缩进层级,特别是在循环和条件语句内部。

数据排序与可视化准备

按年份排序

为了后续绘图的一致性,需要将年份按时间顺序排列。利用sorted()函数可轻松实现:

sorted_year_list = sorted(data_dict.keys())
print(sorted_year_list)

每年GDP前八国家的提取

目标是绘制每年GDP排名前八的国家柱状图,因此需对每一年的数据按GDP值进行降序排序,并截取前八条记录:

for year in sorted_year_list:
    data_dict[year].sort(key=lambda element: element[1], reverse=True)
    year_8_data = data_dict[year][0:8]

图表构建

创建柱状图数据

从筛选出的前八名国家中提取国家名称和对应的GDP数据,并对单位进行调整以便展示:

x_data = []
y_data = []
for country_gdp in year_8_data:
    x_data.append(country_gdp[0])
    y_data.append(country_gdp[1] / 10000000)  # 转换为“亿”为单位

使用Pyecharts绘制柱状图

借助Pyecharts库中的Bar组件,构建基础柱状图,并设置坐标轴标签方向:

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *

bar = Bar()
bar.add_xaxis(x_data)
bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
# 可选择反转x轴与y轴以生成横向柱状图

构建时间线动画效果

结合Timeline功能,可以将多年的数据整合成动态变化的时间序列图表,逐年展示GDP排名的变化趋势。

bar.reversal_axis()

# 创建时间线实例
timeline = Timeline({
    "theme": "purple-passion",
    "bg_color": "#fff",
    "width": "1200px",
    "height": "600px"
})

# 将柱状图添加到时间线中,每个年份作为一个节点
# 注意:年份需转换为字符串格式以满足参数要求
timeline.add(bar, str(year))

# 配置时间线的播放行为
timeline.add_schema(
    play_interval=1000,           # 播放间隔(毫秒)
    is_timeline_show=True,        # 显示时间轴
    is_auto_play=True,            # 自动播放
    is_loop_play=True             # 循环播放
)

# 渲染图表并输出为HTML文件
bar.render("1960-2019全国前八GDP国家.html")


生成结果出现异常。尝试后发现,即使将时间线相关代码注释,仍无法正常显示时间线效果。  
最终柱状图可单独生成,但时间线功能始终未生效,推测可能与所用版本插件存在兼容性问题或渲染机制故障。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Charts Chart Hart Arts 可视化

沙发
cre8 发表于 2025-12-13 09:13:36

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-21 21:27