利用Pyecharts绘制直辖市人口折线图

目录

前言

一、导入所需库和创建Line对象

二、打开并读取CSV文件

三、处理数据

四、添加数据到Line对象和设置全局选项

总结


前言

本文将介绍如何利用Python的Pyecharts库来绘制一张反映中国四个直辖市(北京、上海、天津和重庆)自2003年至2022年的总人口变化趋势的折线图。

一、导入所需库和创建Line对象

导入库

import pyecharts.options as opts
from pyecharts.charts import Line

创建对象 

line = Line()

二、打开并读取CSV文件

这里我们打开了一个名为“分省年度数据(1).csv”的CSV文件,并将其内容读取到一个名为line_datas的列表中。需要注意的是,我们使用了gbk编码来处理文件,这是因为有些中文字符可能会导致乱码。

三、处理数据

这部分代码首先删除了CSV文件的前三行(可能是标题),然后获取了第一行(即年份)的数据,并将其反序。接着,遍历剩余的每一行数据,根据城市名称(北京市、上海市、天津市、重庆市)将数据添加到相应的列表中。

for _ in range(3):
    line_datas.pop(0)

x_data_year = line_datas.pop(0).replace('\n', '').split(',')
x_data_year.pop(0)
x_data_year.reverse()

y_data_bj = []
y_data_sh = []
y_data_tj = []
y_data_cq = []

for line_data in line_datas:
    line_data = line_data.replace("\n", "").split(",")
    if line_data[0] == "北京市":
        line_data.pop(0)
        line_data.reverse()
        y_data_bj = line_data
    elif line_data[0] == "上海市":
        line_data.pop(0)
        line_data.reverse()
        y_data_sh = line_data
    elif line_data[0] == "天津市":
        line_data.pop(0)
        line_data.reverse()
        y_data_tj = line_data
    elif line_data[0] == "重庆市":
        line_data.pop(0)
        line_data.reverse()
        y_data_cq = line_data

四、添加数据到Line对象和设置全局选项

这里我们将年份数据添加到了x轴上,然后分别将四个城市的历年数据添加到了Line对象中。

line.add_xaxis(x_data_year)

line.add_yaxis("重庆市历年人口", y_data_cq)
line.add_yaxis("北京市历年人口", y_data_bj)
line.add_yaxis("上海市历年人口", y_data_sh)
line.add_yaxis("天津市历年人口", y_data_tj)

最后,我们设置了图表的标题和位置。

line.set_global_opts(title_opts=opts.TitleOpts(title="2003-2022年直辖市总人口折线图", pos_right="center", pos_bottom="1%"))

这一步将生成的折线图保存为HTML文件,方便查看。

line.render("../demo/line_4city_population.html")

总结

以上就是利用Pyecharts绘制直辖市人口折线图的基本步骤。通过这个过程,我们可以清晰地看到各直辖市的人口变化趋势,有助于我们了解不同地区的发展状况

# _*_coding : utf-8 _*_
import pyecharts.options as opts
from pyecharts.charts import Line

"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=line-simple

目前无法实现的功能:

暂无
"""


# x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
# y_data = [820, 932, 901, 934, 1290, 1330, 1320]
#
#
# (
#     Line()
#     .set_global_opts(
#         tooltip_opts=opts.TooltipOpts(is_show=False),
#         xaxis_opts=opts.AxisOpts(type_="category"),
#         yaxis_opts=opts.AxisOpts(
#             type_="value",
#             axistick_opts=opts.AxisTickOpts(is_show=True),
#             splitline_opts=opts.SplitLineOpts(is_show=True),
#         ),
#     )
#     .add_xaxis(xaxis_data=x_data)
#     .add_yaxis(
#         series_name="",
#         y_axis=y_data,
#         symbol="emptyCircle",
#         is_symbol_show=True,
#         label_opts=opts.LabelOpts(is_show=False),
#     )
#     .render("basic_line_chart.html")
# )

line = Line()

f = open("C:Users\Dell\Downloads\分省年度数据(1).csv",'r',encoding="gbk")
#
# for line in f:
#     print(line,end="")
# f.close()
#
line_datas = f.readlines()
f.close()
for _ in range(3):
    line_datas.pop(0)

# print("line_data:",line_datas)

# 得到x轴的数据
x_data_year = line_datas.pop(0).replace('\n','').split(",")
x_data_year.pop(0)
x_data_year.reverse()
# print(x_data_year)

# print(line_datas)

y_data_bj = []
y_data_sh = []
y_data_tj = []
y_data_cq = []

for line_data in line_datas:
    line_data = line_data.replace("\n","").split(",")
    if line_data[0] =="北京市":
        line_data.pop(0)
        line_data.reverse()
        y_data_bj = line_data
    elif line_data[0] == "上海市":
        line_data.pop(0)
        line_data.reverse()
        y_data_sh = line_data
    elif line_data[0] == "天津市":
        line_data.pop(0)
        line_data.reverse()
        y_data_tj = line_data
    elif line_data[0] == "重庆市":
        line_data.pop(0)
        line_data.reverse()
        y_data_cq = line_data

line.add_xaxis(x_data_year)

line.add_yaxis("重庆市历年人口",y_data_cq)
line.add_yaxis("北京市历年人口",y_data_bj)
line.add_yaxis("上海市历年人口",y_data_sh)
line.add_yaxis("天津市历年人口",y_data_tj)


line.set_global_opts(title_opts=opts.TitleOpts(title="2003-2022年直辖市总人口折线图",pos_right="center",pos_bottom="1%"))

line.render("../demo/line_4city_population.html")

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值