需求一:请基于pyecharts,用柱形图和折线图在同一个坐标系展示表1数据,得到图1
import pyecharts.options as opts
from pyecharts.charts import Bar,Line
x_years=["2014","2015","2016","2017","2018","2019","2020","2021"]
bar=(
Bar()
.add_xaxis(xaxis_data=x_years)
.add_yaxis(series_name="诊疗量(万人次)",
y_axis=[87430,90912,96225,101885,107147,116390,105764,120215],
label_opts=opts.LabelOpts(is_show=True),color="orange",z=2)
.extend_axis(
# yaxis=opts.AxisOpts() :新增 Y 坐标轴配置项
yaxis=opts.AxisOpts(
name="同比增长速(%)",
type_="value",
min_=-20,
max_=20,
interval=10, #interval:y轴数据之间的间隔
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title=" 2014-2021年中国中医类医疗卫生机构诊疗量",padding=[30,250])
#padding:标题内边距,设置上下的内边距为 30,左右的内边距为 250
)
#下列一句表示该数据项区域的样式图形的颜色透明度
.set_series_opts(itemstyle_opts=opts.ItemStyleOpts(opacity=0.5))#opacity:图形透明度
)
line=(
Line()
.add_xaxis(xaxis_data=x_years)
.add_yaxis(series_name="同比增长速(%)",
y_axis=[7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66],
# 使用的 y 轴的 index
yaxis_index=1,# 第一条y轴索引为0,第二条y轴索引为1
symbol="triangle", #symbol特效图形的标记
symbol_size=20,#图形大小
#标记线为蓝,线宽5
linestyle_opts=opts.LineStyleOpts(color="blue", width=5),
#标记图形为红
itemstyle_opts=opts.ItemStyleOpts(color="red"),
z=3) #Z比上面的z值大,折线图覆盖上面的柱形图形
.set_global_opts(
title_opts=opts.TitleOpts(title=" 2014-2021年中国中医类医疗卫生机构诊疗量",padding=[30,250])
)
)
# bar.render_notebook()
bar.overlap(line).render_notebook() #overlap:层叠多图
运行图如下
需求二:请基于pyecharts,用环图展示表2数据,得到图2
import pyecharts.options as opts
from pyecharts.charts import Pie
pie=(
Pie()
.add("",[('20岁以下',2.2),('20-30岁',27.9),('31-40岁',56.2),('41-50岁',10.9),('51岁以上',2.8)],center=["50%","50%"] ,radius=[100,160])
.set_global_opts(title_opts=opts.TitleOpts(title="中药材消费者画像数据",padding=[30,300]))
)
pie.render_notebook()
运行如下
需求三:请基于pyecharts,用堆积柱形图展示表3数据,得到图3
from pyecharts import options as opts
from pyecharts.charts import Bar
c = (
Bar()
.add_xaxis(['2019年','2020年','2021年','2022年','2023年',])
.add_yaxis("跨国企业占比(%)",[20.3, 22.0, 23.5, 22.5, 22.3], stack="stack1",bar_width=60)
.add_yaxis("本土企业占比(%)", [79.7, 78.0, 76.5, 77.5, 77.7], stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比情况",padding=[30,300]),
#padding:标题内边距,上下内边距为 30,左右内边距为 250
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),) #rotate:标记的旋转角度
)
c.render_notebook()
运行如下
需求四:请基于pyecharts,用雷达图展示表4数据,得到图4
from pyecharts import options as opts
from pyecharts.charts import Radar
v1 = [[33,45,3,9,6,4]]
c = (
Radar()
# .set_colors(["#458598"])
.add_schema(
schema=[
opts.RadarIndicatorItem(name="化学药", max_=50),
opts.RadarIndicatorItem(name="中成药", max_=50),
opts.RadarIndicatorItem(name="生物制品", max_=50),
opts.RadarIndicatorItem(name="医疗器械", max_=50),
opts.RadarIndicatorItem(name="中药饮片", max_=50),
opts.RadarIndicatorItem(name="保健品", max_=50),
],
shape="circle" ,
#绘制类型为圆形,
radius="70%",
center=["50%", "60%"], #图圆心坐标,第一项数表示横坐标位置,第二项数表示纵坐标位置
# background_color='red'
)
.add("销售额占比",v1,color='red',
# 填充区域为红,浅度为0.1 opacity的最大值为1
areastyle_opts=opts.AreaStyleOpts(opacity=0.1))
# 显示标签数据(True) 则不显示标签(False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="全国药店药品销售额占比",padding=[30,350]),
#padding:标题内边距,设置上下的内边距为 30,左右的内边距为 250
)
)
c.render_notebook()
运行结果如下
需求五:将上述图1到图4,利用“并行多图”的方式排布,得到图5