这段代码使用了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
: 导入Bar
和Timeline
图表类型。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_data
和y_data
中。
- 初始化列表:
- 创建柱状图:
- 初始化Bar图: 创建一个
Bar
对象。 - 反转数据顺序: 通过
reverse()
方法将x_data
和y_data
反转,使得在图表中排名第一的国家位于最上方。 - 添加数据到图表:
- x轴: 使用国家名称作为x轴。
- y轴: 使用GDP值作为y轴,并设置标签显示在右侧。
- 设置全局选项:
- 标题: 设置图表标题为“XXXX年GDP前八”。
- 反转坐标轴: 使用
reversal_axis()
方法将坐标轴反转,使柱状图水平显示。
- 初始化Bar图: 创建一个
- 添加到时间轴: 将当前年份的柱状图添加到时间轴对象中,并使用年份作为标签。
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数据的可视化:
- 数据读取和处理: 从CSV文件中读取1960年至2019年的全球各国GDP数据,并将其组织成按年份分类的字典结构。
- 数据排序: 对每个年份的数据按GDP从高到低排序,并选取排名前八的国家。
- 创建柱状图: 为每个年份生成一个水平柱状图,显示前八国家的GDP。
- 时间轴动画: 将每年的柱状图添加到时间轴中,并配置动画播放参数,使得最终生成的HTML文件能够展示一个动态的时间轴动画,展示不同年份的GDP排名变化。
通过这种方式,用户可以直观地观察到1960年至2019年间全球各国GDP的变化趋势和排名动态,非常适合用于数据分析和展示。