前段时间利用pyecharts做了第七次人口普查数据可视化,需要的朋友可以拿去修改使用(代码在文章最后)。
演示图
源代码
# -*- coding:utf-8 -*-
import xlrd as excel # 导入xlrd模块
from pyecharts.charts import Bar, Map, Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Line
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.NTERACT
import webbrowser as wb
def bar(*list): # 柱状图
list1 = list[0]
list2 = list[1]
c = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(list1)
.add_yaxis("第七次人口普查各省人数比列", list2, category_gap="50%")
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45)),
title_opts=opts.TitleOpts(subtitle="总人数:1411778724", pos_left="center",pos_top="5%"),
)
.set_series_opts(
label_opts=opts.LabelOpts(
position="top",
color="blue",
)
)
.render("Bar.html")
)
wb.open("Bar.html")
def line(): # 七次普查人口数量变化
years = ["1953", "1964", "1982", "1990", "2000", "2010", "2020"] # 年份表
data = [6.01, 7.23, 10.31, 11.60, 12.95, 13.70, 14.43] # 数据含港澳台,单位:亿
c = (
Line(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
.add_xaxis(years)
.add_yaxis("年份节点", data)
.set_global_opts(title_opts=opts.TitleOpts(title="七次人口普查历年折线数据图", subtitle="单位:亿"))
.render("line.html")
)
wb.open("line.html")
def ChianMap(*collection):
points_tulpe = list(zip(collection[0], collection[1]))
c = (
Map(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
.add("", points_tulpe, "china")
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(title_opts=opts.TitleOpts(title="中国第七次人口普查各省数据", pos_left="center"))
.render("provinceNum.html")
)
wb.open("provinceNum.html")
def pin():
mf_ratio = [("男", 51.24), ("女", 48.76)]
age_ratio = [("0-14岁", 17.95), ("15-59岁", 63.35), ("60岁及以上", 13.50)]
graduation = [("大学(含大专及以上)", 15467), ("高中(含中专)", 15088), ("初中", 34507), ("小学", 24767)]
c = (
Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
.add(
" ",
mf_ratio,
radius=["15%", "30%"],
center=["20%", "30%"],
)
.add(
"",
age_ratio,
radius=["15%", "30%"],
center=["45%", "30%"],
)
.add(
"每十万人中",
graduation,
radius=["15%", "30%"],
center=["20%", "70%"],
)
.set_global_opts(
title_opts=opts.TitleOpts(title="男女比例、年龄比例、每十万人中受教育人数"),
legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_right="18%"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render('pie.html')
)
wb.open('pie.html')
def main():
data_path = "第七次人口调查数据.xlsx" # 文件的绝对路径
sheetName = "第七次人口普查数据" # sheet工作表的名字
data = excel.open_workbook(data_path) # 打开表格
table = data.sheet_by_name(sheetName)
area = table.col_values(0) # 获取区域名字
num = table.col_values(1) # 获取人数
ratio = table.col_values(2) # 获取比例信息
bar(area, ratio) # 柱状图
line() # 历年人口数量变化
ChianMap(area, num) # 中国地图数量显示
pin() # 饼图
if __name__ == "__main__":
main()
我使用的环境是Python3.6.0,在使用之前保证你已经安装pyecharts最新版本pyecharts v1,其它版本没有试过或许能用。普查数据要和程序放在同一文件下使用。
人口普查数据
链接:https://download.csdn.net/download/weixin_52658156/20346301