借一次小项目(小到练手的,嘿嘿),第一次接触到pyecharts,使用感觉嘎嘎舒服,在这里记录一下,一共四张图,折线图,箱型图,饼图/玫瑰图(其实这俩差不多,改个值就行),世界图
先看效果图
这是pyecharts的链式调用,也有之前的单独调用,具体的用法可以看这个大佬的博客Python之pyecharts使用
官方文档也是中文的,非常友好
代码如下:
# 开始绘图
line = (
# 题目和图宽
Line(init_opts=opts.InitOpts(page_title='15日新增确诊累计图', width='100%'))
# 图形的全局配置
.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),
),
)
# 添加X,Y坐标信息
.add_xaxis(xaxis_data=x)
.add_yaxis(
series_name="15日新增确诊累计图",
y_axis=y,
symbol="emptyCircle",
is_symbol_show=True,
label_opts=opts.LabelOpts(is_show=True),
is_connect_nones=True
)
# 绘图保存到本地
.render('15日新增确诊累计图.html')
)
# 开始绘图
X = ['美国', '中国', '日本本土', '德国', '印度', '法国', '英国', '巴西', '意大利', '加拿大']
V = [[对应的数据,数据至少大于5个], [X轴有几个值,就对应几个列表]]
box = Boxplot(init_opts=opts.InitOpts(width='100%', page_title='GDP前十国家确诊人数箱型图'))
box.add_xaxis(X)
# box.prepare_data(列表)会自动根据提供的值去计算箱型图需要的值
box.add_yaxis('', box.prepare_data(V))
box.set_global_opts(
title_opts=opts.TitleOpts(title='GDP前十国家确诊人数箱型图', pos_right='center')
)
box.render('GDP前十国家确诊人数箱型图.html')
这个就是单独调用的
pie = (
Pie(
init_opts=opts.InitOpts(page_title='全球确诊人数占比', width='100%') # 配置题头
)
# add添加小饼图,center是图的位置
.add(
series_name = '', # 相当于饼图的介绍
[list(z) for z in v_list[0]], # 这个是zip()后的数据,比如:[('中国', '112131'),('美国', '511561')]
# 图的位置
center=['20%', '32%'],
# 饼图的半径,数组的第一项是内半径,第二项是外半径
radius=[30, 75],
# 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。
# radius:扇区圆心角展现数据的百分比,半径展现数据的大小
# area:所有扇区圆心角相同,仅通过半径展现数据大小
rosetype="area", # 不好看
)
.add(
'',
[list(z) for z in v_list[1]],
center=['45%', '32%'],
radius=[30, 75],
rosetype='radius'
)
.add(
'',
[list(z) for z in v_list[2]],
center=['70%', '32%'],
radius=[30, 75],
)
.add(
'',
[list(z) for z in v_list[3]],
center=['10%', '80%'],
radius=[30, 75],
)
.add(
'',
[list(z) for z in v_list[4]],
center=['35%', '80%'],
radius=[30, 75],
)
.add(
'',
[list(z) for z in v_list[5]],
center=['60%', '80%'],
radius=[30, 75],
)
.add(
'',
[list(z) for z in v_list[6]],
center=['85%', '80%'],
radius=[30, 75],
)
.set_global_opts(
# 设置左上角标题和副标题
title_opts=opts.TitleOpts(
title="全球确诊人数占比", pos_right='center'
),
# 图例设置
legend_opts=opts.LegendOpts(
type_='scroll', # 因为图例太多了,scroll设置滚动
pos_top='5%'
)
)
.render('全球确诊人数占比.html')
)
map = (
Map(
init_opts=opts.InitOpts(page_title='全球疫苗接种数据图', width='100%') # 题头设置
)
# add添加图例
.add(
'累计接种/亿剂',
jiezhong_data,
maptype='world',
is_map_symbol_show=False,
is_selected=True,
name_map=nameMap
)
.add(
'每百人/亿剂',
bairen_data,
maptype='world',
is_selected=True,
is_map_symbol_show=False
)
# 系列配置
.set_series_opts(
# 不显示经纬度,设置颜色,字体大小
label_opts={'is_show': 'False',
'color': '#fff', 'font_size': '18', 'position': 'left'},
)
# 全局配置
.set_global_opts(
# 视觉映射配置项
visualmap_opts=opts.VisualMapOpts(min_=0, max_=int(2500000000)),
# 设置左上角标题和副标题
title_opts=opts.TitleOpts(
title="全球疫苗接种情况地图", pos_left="50", pos_top="5%",
title_textstyle_opts=opts.TextStyleOpts(font_size=30),
subtitle_textstyle_opts=opts.TextStyleOpts(font_size=18, color='#222')
),
# 图例设置
legend_opts=opts.LegendOpts(
selected_mode='single', pos_top="50", pos_bottom="5%", pos_right="right",
textstyle_opts=opts.TextStyleOpts(font_size=18)),
)
.render('全球疫苗接种情况地图.html')
)
以上就是我在这次的练手项目中的使用,好多的参数都不太清楚,只是能达到使用的效果,待到以后再深入学习可视化的时候,了解一下,这也算是迈出可视化的第一步吧,加油!