使用pycharts绘制图表

      渲染图表

      图表基类Base主要提供了两个渲染图表的方法:render()和render_notebook()。具体介绍如下:

   1.render()方法

render(self,path="render.html",template_name="sinple_chart.html",env=None,**kwrgs)

   以上的方法中的参数path表示生成文件的路径,默认为render.html;template_name表示模版的路径。redenr()方法会返回HTML文件的路径字符串。

  2.render_notebook()方法

bar.render_notebook()

  •  【pyecharts绘图思路】
  • # 0.导入需要用到的图表类(Bar,Line,Scatter,Pie)
  • # 1. 准备数据(数据爬取-数据清洗-数据结构化): 数据格式要符合传参的需求
  • # 2.通过导入的图表类,创建图表实例
  • # 3.往图表实例填充数据,即完成绘图
  • # 4.设置“系列配置项”和“全局配置项”--> 可做可不做(类似于matplotlib的:图表辅助元素的定制和样式美化)
  • # 5. 展示图表(渲染图表)

  • 【pyecharts的常用的图表分成两大类】
  •  1. 带x轴和y轴的直角坐标系图表(柱形图,折线图,散点图,箱型图)
  •      .add_xaxis()
  •      .add_yaxis()
  •  2. 不带x轴和y轴的基本图表(饼图,环图,词云图,桑基图,漏斗图, 雷达图)
  •      .add()

实例一: 

绘制饼图或环形图

     pyecharts的Pis类表示饼图,该类中提供可一个add()方法,使用add()方法可以为饼图添加数据和配置项。add()方法的语法格式如下:

add(self,series_name,data_pair,color=None,radius=None,center=None,rosetype=None,is_clockwise=Ture,label_opts=opts.LabaelOpts(),tooltip_opts=None,itemstyle_opts=None)

基于pyecharts,用环图展示

表2. 中药材消费者画像数据

年龄

占比(%)

20岁以下

2.2

20-30岁

27.9

31-40岁

56.2

41-50岁

10.9

51岁以上

2.8

from pyecharts import options as opts
from pyecharts.charts import Pie#导入pie模块(Bar,Line)
from pyecharts.faker import Faker
#1.数据准备
age_data = [("20岁以下", 2.2), ("20-30岁", 27.9), ("31-40岁", 56.2), ("41-50岁", 10.9), ("51岁以上", 2.8)]
c = (
Pie()
.add(
"",age_data,
radius=["40%", "75%"],#环图内直径与外直径(50%是画布的一半)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="中药材消费者画像数据"),
legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
 
c.render_notebook()

实例二:

基于pyecharts,用堆积柱形图展示

表3. 全国药店中药饮片供应商占比情况

年份(年)

跨国企业占比(%)

本土企业占比(%)

2019

20.3

79.7

2020

22.0

78.0

2021

23.5

76.5

2022

22.5

77.5

2023

22.3

77.7

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
#数据准备
year_data = [2019,2020,2021,2022,2023]
data1 = [20.0,22.0,23.5,22.5,22.3]
data2 = [79.7,78.0,76.5,77.5,77.7]
#导入相对应的数据
bar_stack = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(year_data)
.add_yaxis("跨国企业占比(%)", data1, stack="stack1", category_gap="60%")
.add_yaxis("本土企业占比(%)", data2, stack="stack1", category_gap="60%")
.set_series_opts(
label_opts=opts.LabelOpts(
position="top")
)
.set_global_opts(title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比情况"))
)
#渲染图表
bar_stack.render_notebook()

 

 

实例三: 

基于pyecharts,用柱形图和折线图展示

from pyecharts.charts import Bar, Line
from pyecharts import options as opts
 
#准备数据
x_data=["2014年","2015年","2016年","2017年","2018年","2019年","2020年","2021年"]
y1=[87430, 90912, 96225, 101885, 107147, 116390 ,105764 , 120215]
y2=[7.40 , 4.00 , 4.00 , 5.81 , 5.16 , 8.63 , -9.13 , 13.66]
 
#导入相关数据
bar=(
Bar(init_opts=opts.InitOpts(width='800px', height='600px'))#柱形图的宽度和高度
.add_xaxis(x_data)#把x_data实例化到画布中
.add_yaxis(
y_axis=y1,#实现y值
yaxis_index=1, #表示y轴的索引,用于拥有多个y轴的单图表中。
series_name='诊疗量(万人次)', 
z=0,#因为折线图会被柱状图遮挡,所以把柱形图置底
label_opts=opts.LabelOpts(is_show=False),
)
.extend_axis(
yaxis=opts.AxisOpts(
name='诊疗量(万人次)',# 柱形图y轴名称
type_='value',
position='left',# 柱形图y轴在左边显示
)
)
 
.extend_axis(
yaxis=opts.AxisOpts(
name='同比增速(%)',# 折线图y轴名称
type_='value',
position='right',# 折线图y轴在右边显示
)
)
.set_global_opts( #设置全局配置项
title_opts=opts.TitleOpts(title='2014-2021年中国中医类医疗卫生机构诊疗量'), #标题名称
legend_opts=opts.LegendOpts(pos_left='45%' ), #图例距离左边边距:40%
tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'), #显示提示框组件
toolbox_opts=opts.ToolboxOpts(is_show=True) #显示工具栏 
)
)
 
 
 
line = (
Line() #创建Line类的对象
.add_xaxis(x_data) #添加x轴的数据
.add_yaxis(
series_name='同比增速(%)', #图例名:同比增速(%)
y_axis=y2, #y轴折线图数据
yaxis_index=2, #表示y轴的索引
z=2
)
)
#渲染图表
bar.render_notebook()
 

实例四: 

基于pyecharts,用雷达图展示

import pyecharts.options as opts
from pyecharts.charts import Radar
data = [[33, 45, 3, 9,6, 4]]
 
x_schema = [
        {"name": "化学药",  "color": 'black', "font_size": 18},
        {"name": "中成药",  "color": 'black', "font_size": 18},
        {"name": "生物制品", "color": 'black',"font_size": 18},
        {"name": "中药饮片",  "color": 'black', "font_size": 18},
        {"name": "保健品",  "color": 'black', "font_size": 18}
    ]
 
radar_x = Radar()
radar_x.add_schema(x_schema,shape="circle")
radar_x.add('药品', data, color='red').set_colors(['red'])
 
radar_x.set_global_opts(
        title_opts=opts.TitleOpts(title="全国药店药品销售额占比", pos_right="center"),
        legend_opts=opts.LegendOpts(legend_icon="roundRect", align="left", pos_left='7%',
                                  pos_bottom='14%', orient='vertical')
    )
radar_x.render_notebook()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值