使用可视化动态柱状图表示GDP前8

这段代码使用了pyecharts库来可视化1960年至2019年全球各国GDP数据,通过时间轴展示各年份GDP排名前八的国家。
在这里插入图片描述

1. 导入必要的库和模块

from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.options import *
from pyecharts.globals import ThemeType
  • pyecharts.charts: 导入BarTimeline图表类型。
  • pyecharts.options: 导入各种配置选项,用于自定义图表的外观和行为。
  • pyecharts.globals: 导入ThemeType,用于设置图表主题。

2. 读取和处理数据

f = open("D:\study python\code\python实践\\14.pyechart可视化\\1960-2019全球GDP数据.csv","r",encoding="GB2312")
data_lines = f.readlines()
f.close()
data_lines.pop(0)
  • 打开文件: 使用open函数以读取模式打开指定路径的CSV文件,编码格式为GB2312,适用于中文字符集。
  • 读取内容: 使用readlines()方法将文件的所有行读取到data_lines列表中。
  • 关闭文件: 读取完毕后关闭文件。
  • 移除表头: 使用pop(0)移除CSV文件的第一行(通常是表头)。

3. 将数据组织到字典中

data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2])

    try:
        data_dict[year].append([country, gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country, gdp])
print(data_dict)
  • 初始化字典: data_dict用于存储按年份分类的各国GDP数据。
  • 遍历每一行数据:
    • 提取年份: 将每行数据按逗号分割,取第一个元素并转换为整数。
    • 提取国家: 取第二个元素作为国家名称。
    • 提取GDP: 取第三个元素并转换为浮点数,表示GDP值。
  • 组织数据:
    • 尝试添加到现有年份: 使用try-except结构,如果data_dict中已存在当前年份,则将[国家, GDP]添加到对应列表中。
    • 处理新年份: 如果年份不存在,则初始化一个新的列表,并添加当前国家和GDP数据。
  • 打印字典: 用于调试,查看组织后的数据结构。

4. 创建时间轴对象

timeline = Timeline({"theme": ThemeType.DARK})
  • 初始化时间轴: 创建一个Timeline对象,并设置主题为DARK(暗色主题)。

5. 处理和添加每年的数据到时间轴

# 排序年份
sorted_year_list  = sorted(data_dict.keys())
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element: element[1], reverse=True)
    # 取出来前八
    year_data = data_dict[year][0:8]
    x_data = []
    y_data = []
    for country_gdp in year_data:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1] / 100000000)

    bar = Bar()
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年GDP前八")
    )
    bar.reversal_axis()

    timeline.add(bar, str(year))
  • 排序年份: 使用sorted函数将年份按升序排列,存储在sorted_year_list中。
  • 遍历每个年份:
    • 排序国家GDP: 对当前年份的国家GDP列表按GDP值从高到低排序。
    • 取前八: 选取GDP排名前八的国家数据,存储在year_data中。
    • 准备绘图数据:
      • 初始化列表: x_data用于存储国家名称,y_data用于存储对应的GDP值(除以1亿,单位为亿)。
      • 遍历前八国家: 将国家名称和转换后的GDP值分别添加到x_datay_data中。
    • 创建柱状图:
      • 初始化Bar图: 创建一个Bar对象。
      • 反转数据顺序: 通过reverse()方法将x_datay_data反转,使得在图表中排名第一的国家位于最上方。
      • 添加数据到图表:
        • x轴: 使用国家名称作为x轴。
        • y轴: 使用GDP值作为y轴,并设置标签显示在右侧。
      • 设置全局选项:
        • 标题: 设置图表标题为“XXXX年GDP前八”。
      • 反转坐标轴: 使用reversal_axis()方法将坐标轴反转,使柱状图水平显示。
    • 添加到时间轴: 将当前年份的柱状图添加到时间轴对象中,并使用年份作为标签。

6. 配置时间轴的播放参数

timeline.add_schema(
    play_interval=500,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)
  • play_interval=500: 设置每一帧之间的播放间隔为500毫秒。
  • is_timeline_show=True: 显示时间轴控件。
  • is_auto_play=True: 自动播放动画。
  • is_loop_play=False: 动画播放到最后一帧后不循环播放。

7. 渲染并输出HTML文件

timeline.render("1960-2019全球GDP前8数据.html")
  • 生成HTML文件: 将时间轴图表渲染并保存为1960-2019全球GDP前8数据.html,可以在浏览器中打开查看交互式可视化效果。

总结

这段代码通过以下步骤实现了全球GDP数据的可视化:

  1. 数据读取和处理: 从CSV文件中读取1960年至2019年的全球各国GDP数据,并将其组织成按年份分类的字典结构。
  2. 数据排序: 对每个年份的数据按GDP从高到低排序,并选取排名前八的国家。
  3. 创建柱状图: 为每个年份生成一个水平柱状图,显示前八国家的GDP。
  4. 时间轴动画: 将每年的柱状图添加到时间轴中,并配置动画播放参数,使得最终生成的HTML文件能够展示一个动态的时间轴动画,展示不同年份的GDP排名变化。

通过这种方式,用户可以直观地观察到1960年至2019年间全球各国GDP的变化趋势和排名动态,非常适合用于数据分析和展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值