pyecharts官网:https://pyecharts.org/#/zh-cn/intro
pyecharts众多图表示例代码:https://gallery.pyecharts.org/#/README
需求一: 请基于pyecharts,用柱形图和折线图在同一个坐标系展示表1数据,得到图1。
代码如下:
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line
Bar(init_opts=opts.InitOpts(width='950px', height='600px'))#指定画布大小
x_data = ["{}年".format(i) for i in range(2014, 2022)]#设置x轴
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis(
"诊疗量(万人次)",
[87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215],#准备数据
yaxis_index=1,
label_opts=opts.LabelOpts(is_show=False),
color="green",
)
.extend_axis(
yaxis=opts.AxisOpts(
name="诊疗量(万人次)",
type_="value",
min_=0,
max_=150000,
position="left",
)
)
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
name="同比增速(%)",
min_=-10,
max_=15,
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color="orange")
),
axislabel_opts=opts.LabelOpts(formatter="{value} %"),
splitline_opts=opts.SplitLineOpts(
is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
),
)
)
)
#设置标题和图例
bar.set_global_opts(
title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量"),
legend_opts=opts.LegendOpts(pos_left='42%' ),#图例距离标题边距:42%
)
line = (
Line()
.add_xaxis(x_data)
.add_yaxis(
"同比增速(%)",
[7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66],
yaxis_index=2,
color="orange",
z=2
)
)
#bar.overlap(line)
bar.overlap(line).render_notebook()#渲染到notebook中
注释:
详细注释请翻看文章: 使用pyecharts在同一坐标系下绘制柱形图和折线图-CSDN博客
效果图:
需求二: 请基于pyecharts,用环图展示表2数据,得到图2。
代码如下:
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.commons.utils import JsCode
def new_label_opts():
return opts.LabelOpts(formatter=JsCode(fn), position="center")#画布位置
c2 = (
Pie()
.add(
"",
[list(z) for z in zip(["20岁以下", "20-30岁", "31-40岁", "41-50岁", "51岁以上"], [2.2, 27.9,56.2,10.9,2.8])],#数据
center=["20%", "30%"],#图表的中心位置
radius=[60, 80],#表示半径
)
.set_global_opts(
title_opts=opts.TitleOpts(title="中药材消费者画像数据"),
legend_opts=opts.LegendOpts(
is_show=False
),
)
.render("mutiple_pie0.html")#效果图位置命名
)
效果图:
需求三: 请基于pyecharts,用堆积柱形图展示表3数据,得到图3。
代码如下:
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
data = pd.DataFrame({
#准备数据
"区域": ["2019年", "2020年", "2021年", "2022年", "2023年"],#x轴
"总销量": [100, 100, 100, 100, 100],#y轴
"跨国企业占比(%)": [20.3, 22.0, 23.5, 22.5, 22.3],
"本土企业占比(%)": [79.7, 78.0, 76.5, 77.5, 77.7],
})
bar = (
Bar(init_opts=opts.InitOpts(width="800px", height="500px"))#指定画布大小
.add_xaxis(data["区域"].tolist())
.add_yaxis("总销量", data["总销量"].tolist()
)
)
stack_bar = (
Bar(init_opts=opts.InitOpts(width="830px", height="500px"))
.add_xaxis(data["区域"].tolist())
.add_yaxis("跨国企业占比(%)", data["跨国企业占比(%)"].tolist(), stack="stack1", category_gap="50%")
.add_yaxis("本土企业占比(%)", data["本土企业占比(%)"].tolist(), stack="stack1", category_gap="50%")
# 在系列设置中设置标签属性
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False)#隐藏数据
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="全国药店中药饮片供应商占比情况"),#设置标题
legend_opts=opts.LegendOpts())
.render("mutiple_pie3.html")
)
效果图:
需求四: 请基于pyecharts,用雷达图展示表4数据,得到图4。
代码如下:
from pyecharts import options as opts
from pyecharts.charts import Radar#导入库
v = [[33, 45, 3, 9, 6, 4]]#数据
c = (
Radar(init_opts=opts.InitOpts(width="600px", height="500px"))#指定画布大小
.add_schema(
schema=[
opts.RadarIndicatorItem(name="化学药"),#设置标签
opts.RadarIndicatorItem(name="中成药"),
opts.RadarIndicatorItem(name="生物制品"),
opts.RadarIndicatorItem(name="医疗器械"),
opts.RadarIndicatorItem(name="中药饮品"),
opts.RadarIndicatorItem(name="保健品"),
]
)
.add("药品类型", v)#添加图例
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))#隐藏柱形图上面的数据
.set_global_opts(
legend_opts=opts.LegendOpts(selected_mode="single"),
title_opts=opts.TitleOpts(title="全国药店药品销售额占比"),#设置标题
)
.render("radar_selected_mode.html")
)
效果图: