#导入模版
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Pie,Radar
#1.绘制柱形图
x_data = ["2014","2015","2016","2017","2018","2019","2020","2021"]
value_1 =[87430, 90912,96225,101885,107147,116390,105764,120215]
value_2 = [7.40,4.00,5.83,5.81,5.16,8.63,-9.31,13.66]
bar = (
Bar() #设置柱形图宽度与高度
.add_xaxis(xaxis_data=x_data) #添加x轴的数据
.add_yaxis(
series_name="诊疗量(万人次)", #图例名:诊疗量(万人次)
y_axis=value_1, ##y轴柱形图数据
yaxis_index=1, #表示y轴的索引,用于拥有多个y轴的单图表中。
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",
min_=-20, #y轴最小值:-20
max_=20, #y轴最大值:20
position="right", #位于y轴右侧
)
)
.set_global_opts( #设置全局配置项
title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量",
pos_left='center'), #标题名称
legend_opts=opts.LegendOpts(is_show=False), #不显示图例
)
.set_series_opts(
itemstyle_opts=opts.ItemStyleOpts( #图元样式配置项
opacity=0.5), #设置柱形图透明度:0.5
)
)
line = (
Line() #创建Line类的对象
.add_xaxis(x_data) #添加x轴的数据
.add_yaxis(
series_name="同比增速(%)", #图例名:同比增速(%)
y_axis=value_2, #y轴折线图数据
yaxis_index=2, #表示y轴的索引,用于拥有多个y轴的单图表中。
)
)
#堆积柱形图
x_data=['2019年','2020年','2021年','2022年','2023年']
data1 = [20.3,22.0,23.5,22.5,22.3] # 跨国企业占比
data2 = [79.7,78.0,76.5,77.5,77.7] # 本土企业占比
tu = (
Bar()
.add_xaxis(x_data)
.add_yaxis("跨国企业占比", data1, stack="stack1", category_gap="30%",color='blue', #stack="stack1":堆积柱形图
xaxis_index=1,
yaxis_index=3,
label_opts=opts.LabelOpts(is_show=False) #不显示柱形图数据
)
.add_yaxis("本土企业占比", data2, stack="stack1", category_gap="50%",color='orange',
xaxis_index=1,
yaxis_index=3,
label_opts=opts.LabelOpts(is_show=False) #不显示柱形图数据
)
.set_global_opts( #设置全局配置项
title_opts=opts.TitleOpts(title="全国药店中药饮片供应商占比", #标题名称
pos_left='70%',
pos_top="52%"),
legend_opts=opts.LegendOpts(is_show=False ), #不显示图例
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), #显示提示框组件
yaxis_opts=opts.AxisOpts(min_=0,max_=100, #y轴刻度范围0—100
interval=25 #y轴刻度范围分为25一组
),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45) #x轴标签旋转45°
)
)
)
# 绘制环形图
#添加标签与数值
labels=[('20岁以下',2.2),
('20-30岁',27.9),
('31-40岁',56.2),
('41-50岁',10.9),
('51岁以上',2.8)]
pie = (
Pie() #创建Pie类的对象
.add(
"",
labels, #标签与数值
center=["30%", "80%"], # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
radius=["10%", "30%"] #饼图的半径,数组的第一项是内半径,第二项是外半径
)
.set_global_opts( #设置全局配置项
title_opts=opts.TitleOpts(title="中药材消费者画像",
pos_left='20%',
pos_top="55%",
is_show=True, #显示标题
),
legend_opts=opts.LegendOpts(is_show=False, ) #不展示图例
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
)
# 绘制雷达图失败
# v1 = [[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},
# {"name": "保健品", "color": 'black', "font_size": 18}
# ]
# radar_x = Radar()
# radar_x.add_schema(x_schema)
# radar_x.add('', v1, color='pink').set_colors(['pink'])
# radar_x.set_global_opts(
# title_opts=op.TitleOpts(title="全国药店药品销售额占比", pos_right="center"),
# legend_opts=op.LegendOpts( align="left", pos_left='7%',
# pos_bottom='14%')
# )
bl=bar.overlap(line)
#创建一个组合图表实例(数据填充格式为:其他图表实例,Bar,Line,Pie,Scatter)
grid = (
Grid() #GridOpts:直角坐标系网格配置项
.add( bl,
grid_opts=opts.GridOpts(pos_bottom="70%"), #grid 组件离容器下侧的距离
is_control_axis_index=True
)
.add(tu,
grid_opts=opts.GridOpts(pos_bottom="10%",
pos_top="60%",
pos_left="100%",
pos_right="35%"
),
is_control_axis_index=True
)
.add(pie,
grid_opts=opts.GridOpts(pos_bottom="10%",
pos_top="80%",
pos_left="20%",
pos_right="10%"),
is_control_axis_index=True
)
# .add(radar_x,
# grid_opts=opts.GridOpts(pos_bottom="15%",
# pos_top="60%",
# pos_left="60%",
# pos_right="15%"),
# is_control_axis_index=True
)
grid.render_notebook()
使用pyecharts实现并行多图
最新推荐文章于 2023-12-23 15:15:03 发布