学习记录之---绘制饼图

学习目的:

1. 接上篇文章解释其中一组代码

2. 使用pyecharts做饼图

1 接上篇文章解释其中一组代码

import json
import datetime
from pyecharts.charts import Map
from pyecharts import options as opts

# 读原始数据文件
today = datetime.date.today().strftime('%Y%m%d')   #20200416
datafile = 'data/'+ today + '.json'
with open(datafile, 'r', encoding='UTF-8') as file:
    json_array = json.loads(file.read())

# 分析实时数据:'confirmedCount'字段
china_data = []
for province in json_array:
    china_data.append((province['provinceShortName'], province['confirmedCount']))
china_data = sorted(china_data, key=lambda x: x[1], reverse=True)                 #reverse=True,表示降序,反之升序

print(china_data)
# 自定义的每一段的范围,以及每一段的特别的样式。
pieces = [
    {'min': 10000, 'color': '#540d0d'},
    {'max': 9999, 'min': 1000, 'color': '#9c1414'},
    {'max': 999, 'min': 500, 'color': '#d92727'},
    {'max': 499, 'min': 100, 'color': '#ed3232'},
    {'max': 99, 'min': 10, 'color': '#f27777'},
    {'max': 9, 'min': 1, 'color': '#f7adad'},
    {'max': 0, 'color': '#f7e4e4'},
]
labels = [data[0] for data in china_data]
counts = [data[1] for data in china_data]

m = Map()#导入做地图的Map模块
#指直接下来作图的数据,list(z)是指数据项,后接(坐标点名称和坐标点值)
m.add("累计确诊", [list(z) for z in zip(labels, counts)], 'china')

#系列配置项,LabelOpts是标签配置项,font_size是字体大小,is_show为是否显示标签
m.set_series_opts(label_opts=opts.LabelOpts(font_size=12),
                  is_show=False)
                  
#全局配置项,TitleOpts是标题配置项,subtitle是副标题。
m.set_global_opts(title_opts=opts.TitleOpts(title='数据',
                                            subtitle='数据来源:丁香园'),
                                            #LegendOpts是指图例配置项
                  legend_opts=opts.LegendOpts(is_show=False),
                  #VisualMapOpts是指视觉映射配置项
                  visualmap_opts=opts.VisualMapOpts(pieces=pieces,
                                                    is_piecewise=True,   #是否为分段型
                                                    is_show=True))       #是否显示视觉映射配置
#render()会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件,也可以传入路径参数,如 m.render("mycharts.html")
m.render(path='C:/Users/Admin/demo/yiqingditu/data/数据.html')

以上是对代码的补充说明!

2.然后就是做第二个任务啦,分为三步。

第一:上代码,代码解释直接在代码中

第二:参考链接附上。

第一

import json
import datetime
from pyecharts.charts import Pie
import pyecharts.options as opts

# 读原始数据文件
today = datetime.date.today().strftime('%Y%m%d')   #20200315
datafile = 'data/'+ today + '.json'
with open(datafile, 'r', encoding='UTF-8') as file:
    json_array = json.loads(file.read())

# 分析数据:'confirmedCount'字段
china_data = []
for province in json_array:
    china_data.append((province['provinceShortName'], province['confirmedCount']))
china_data = sorted(china_data, key=lambda x: x[1], reverse=True)                 #reverse=True,表示降序,反之升序

print(china_data)
#
labels = [data[0] for data in china_data]
counts = [data[1] for data in china_data]

data_china = [list(z) for z in zip(labels, counts)]

##以上跟上面完全一致,大概意思就是导入数据,然后取出自己需要的数据以当前时间命名。接下来就是应用pyecharts中的Pie饼图模块进行制作啦~最后通过渲染文件输入到所需保存的位置
# 可以赋予对象,也可不必,因为渲染是通过  .render() 语句完成的
p = (
        Pie()  # 就是pyecharts中的Pie饼图模块
        .add(  #加入所需的配置项
            series_name="地名",  # 系列名称
            data_pair=data_china,# 馈入数据
            radius="35%",            # 饼图半径比例
            center=["50%", "50%"],   # 饼图中心坐标
            label_opts=opts.LabelOpts(is_show=False, position="center"),  # 标签位置
        )
        .set_global_opts(legend_opts=opts.LegendOpts(is_show=False))      # 不显示图例
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 标签颜色
    .render(path='C:/Users/Admin/demo/yiqingditu/data/饼图.html')  # 渲染文件及其名称
)

然后就是参考链接了~


这是pyecharts的官网,里面有详细的配置说明和不同的模:https://echarts.apache.org/examples/zh/index.html#chart-type-pie
还有就是要感谢百度的paddle,真是相见恨晚,跟着学习必有收获。
数据来源丁香网:https://ncov.dxy.cn/ncovh5/view/pneumonia

发布了12 篇原创文章 · 获赞 3 · 访问量 227

猜你喜欢

转载自blog.csdn.net/weixin_43468161/article/details/105575479