一、逗号分隔值文件
逗号分隔值(有时也叫字符分隔值,因为有时候分隔字符不是逗号)文件也称为CSV文件(文件名后缀为.csv)。这种文件格式主要用于储存表格数据,采用纯文本方式,由多条记录组成,每条记录由字段构成,而字段之间的分割依靠逗号或其他分隔符(比如制表符)完成。CSV文件常用于电子表格数据的储存和交换,容易在不同程序和系统之间共享数据。
二、库和模块
pyecharts是python中的一个用于生成数据可视化图表的库。pyecharts.charts是pyecharts库中的模块,包含了多种不同类型的图表,如折线图、柱状图等。Bar、Timelines表示我们需要导入的柱状图和时间线。pyecharts.options也是python中pyecharts的模块,它包含了众多用于定制图表组件以及样式的配置项。这些配置项允许开发者对图表的各个方面进行精细化的设置,如标题、图例。*表示这个模块里的所有配置项都被导入了,但我们不一定全部用到。
三、开发思路
1、导入我们开发过程中所需模块里的图表和配置项
2、open读取文件,和.txt文件不同的是这里编码方式为GB2312
3、数据处理,将处理好的数据读取到字典
4、创建时间线,线上的每一点都代表当年全球前八位国家的GDP数据。
5、对年份进行排序,
6、构建柱状图
7、设置自动播放
8、绘图
四、代码展示
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
#读取文件里的数据
f = open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")
data_lines = f.readlines()
f.close()
#删除掉第一条数据
data_lines.pop(0)
#将数据转为字典形式储存
#先定义一个字典对象
data_dic={}
#用for循环读取到字典里面
for line in data_lines:
year=int(line.split(",")[0])
country=line.split(",")[1]
gdp=float(line.split(",")[2])
#判断字典里是否有指定的key
try:
data_dic[year].append([country,gdp])
except KeyError:
data_dic[year]=[]
data_dic[year].append([country,gdp])
#创建时间线对象
timeline = Timeline()
#对年份进行排序
sorted_year_list = sorted(data_dic.keys())
for year in sorted_year_list:
data_dic[year].sort(key=lambda element:element[1],reverse=True) #使用匿名函数对每一年中的第2个元素(即年份)进行排序
year_data = data_dic[year][0:8] #使用切片对取每一年前八
x_data = []
y_data = []
for country_gdp in year_data:
x_data.append(country_gdp[0]) #添加x轴所需的国家名
y_data.append(country_gdp[1]/100000000) #添加y中所需的gdp数据
#构建柱状图
bar = Bar()
x_data.reverse() #翻转x轴
y_data.reverse() #翻转y轴
bar.add_xaxis(x_data) #x轴添加数据
bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right")) #y轴添加数据
bar.reversal_axis() #调换x轴和y轴
bar.set_global_opts(title_opts=TitleOpts(title=f"{year}全球GDP前八名国家")) #添加标题
timeline.add(bar,str(year)) #将每一年的bar添加到时间线对象中
#设置自动播放
timeline.add_schema(
play_interval=1000, #时间间隔设为1000毫秒
is_timeline_show=True, #时间线是否展示
is_auto_play=True, #是否自动播放
is_loop_play=True #是否循环
)
#绘图
timeline.render("GDP动态图.html")