柱形折线融合图
#导入模块
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
#准备数据
x_year = ['2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '2020年', '2021年'] # x轴标签
y_num_left = [87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215] # 诊疗量
y_speed_right = [7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66] # 同比增速
bar = (
Bar()
.add_xaxis(x_year) # 导入x轴
.add_yaxis(
series_name="诊疗量(万人次)",
y_axis=y_num_left, # 柱形图数据
yaxis_index=0,
z=0
)
.extend_axis(
yaxis=opts.AxisOpts(
name="诊疗量(万人次)",
type_="value",
position="left", # 柱形图y轴在左边显示
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color="#d14a61 ") #轴名称颜色
),
)
).set_global_opts( # 设置全局配置项
title_opts=opts.TitleOpts(title='2014-2021年中国中医类医疗卫生机构诊疗量'), # 标题名称
legend_opts=opts.LegendOpts(pos_left='45%'),
tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'), # 显示提示框组件
toolbox_opts=opts.ToolboxOpts(is_show=True)
)
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
name="同比增速(%)", # 折线图y轴名称
position="right", # 折线图y轴在右边显示
)
)
)
line = (
Line()
.add_xaxis(x_year) # 导入x轴
.add_yaxis(
series_name="同比增速(%)", # 折线图图例名称
y_axis=y_speed_right, # 折线图数据
yaxis_index=2,
label_opts=opts.LabelOpts(is_show=False),
)
)
# 渲染图表
bar.overlap(line).render_notebook()
渲染结果如下:
圆环图
#导入模块
from pyecharts import options as opts
from pyecharts.charts import Pie # Pie表示饼图
data = [("化学药",33),("中成药",45),("生物制品",3),("保健品",9),("中药饮片",6),("其他",4)]
#通过导入的类创建实例
pie = Pie()
pie.add("",data,radius=["40%", "70%"])
pie.set_global_opts(title_opts=opts.TitleOpts(title="全国药店药品销售额占比",subtitle="用于展示中药市场趋势"),
toolbox_opts=opts.ToolboxOpts(is_show=True))
pie.render_notebook()#渲染到notebook上
渲染结果如下:
柱形堆积图
# 导入需要用到的图表类和模块
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
# 准备数据
list1 = [
{"value": 20.3},
{"value": 22.0},
{"value": 23.5},
{"value": 22.5},
{"value": 22.3},
]
list2 = [
{"value": 79.7},
{"value": 78.0},
{"value": 76.5},
{"value": 77.5},
{"value": 77.7},
]
# 绘制柱形堆积图实例
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis([2019, 2020, 2021, 2022, 2023])
.add_yaxis("跨国企业占比",
list1,
stack="stack1", # 数据堆叠,同个类目轴上stack值相同可堆叠
category_gap="50%")
.add_yaxis("本土企业占比", list2, stack="stack1", category_gap="50%")
.set_series_opts(
label_opts=opts.LabelOpts(
position="right", # 标签的位置,这里标注于图形右侧
rotate=10,
formatter=JsCode(
"function(x){return Number(x.data.percent * 100).toFixed() + '%';}"
),
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='全国药店中药饮片供应商占比情况'))
)
# 渲染图表
bar.render_notebook()
渲染结果如下:
雷达图
#导入模块
from pyecharts import options as opts
from pyecharts.charts import Radar
from pyecharts.globals import ThemeType
# 2、准备数据
data = [[33, 45, 3, 9, 6, 4]]
c_schema = [
{"name": "化学药", "max": 0, "min": 45},
{"name": "中成药", "max": 0, "min": 45},
{"name": "生物制品", "max": 0, "min": 45},
{"name": "医疗器械", "max": 0, "min": 45},
{"name": "中药饮片", "max": 0, "min": 45},
{"name": "保健品", "max": 0, "min": 45},
]
# 绘制雷达图实例
radar = (
Radar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
.set_colors(["#5793f3"]) # 数据点颜色,填充区域也会改变
.add_schema(
schema=c_schema, # 雷达指示器配置项列表
shape="polygon", # 雷达图绘制可选 'polygon' , 'circle'
center=["50%", "50%"], # 雷达的中心坐标
radius="80%", # 雷达的半径
angleaxis_opts=opts.AngleAxisOpts( # 极坐标系的角度轴
min_=0,
max_=360,
interval=5, # 坐标轴分割间隔
axistick_opts=opts.AxisTickOpts(is_show=False),
axislabel_opts=opts.LabelOpts(is_show=False), # 刻度标签
axisline_opts=opts.AxisLineOpts(is_show=False),
splitline_opts=opts.SplitLineOpts(is_show=False), # 坐标轴分隔线
),
radiusaxis_opts=opts.RadiusAxisOpts( # 极坐标系的径向轴
min_=0, # 设置坐标轴刻度的最小值
max_=45, # 设置坐标轴刻度的最大值
interval=20, # 坐标轴间隔值
splitarea_opts=opts.SplitAreaOpts( # 分割区域,可以装饰图形
is_show=True, # 显示分割区域
areastyle_opts=opts.AreaStyleOpts(color=["#F5DEB3","#DB7093"], # 分割区域的颜色
opacity=0.66)
),
),
polar_opts=opts.PolarOpts(),
splitarea_opt=opts.SplitAreaOpts(is_show=False), # 分隔区域配置项
splitline_opt=opts.SplitLineOpts(is_show=False), # 分割线配置项
)
.add(
series_name="全国药店药品销售额占比",
data=data,
areastyle_opts=opts.AreaStyleOpts(opacity=0.1), # 区域填充样式配置项,透明度
linestyle_opts=opts.LineStyleOpts(width=1), # 线样式配置项,线宽
)
.set_global_opts(title_opts=opts.TitleOpts(title='全国药店药品销售额占比'))
)
# 渲染图表
radar.render_notebook()
渲染结果如下: