可视化作业文档要求
运行结果如下
# 导入模块
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line, Pie, Radar
# 绘制柱形图
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() # 创建折线图对象
.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',
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='40%',
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() # 创建饼图对象
.add(
"",
labels, # 标签与数值
center=["20%", "80%"], # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
radius=["10%", "30%"] # 饼图的半径,数组的第一项是内半径,第二项是外半径
)
.set_global_opts( # 设置全局配置项
title_opts=opts.TitleOpts(title="中药材消费者画像",
pos_left='10%',
pos_top="52%",
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() # 创建雷达图对象
.add_schema(x_schema)
.add('', v1, color='red').set_colors(['red'])
.set_global_opts(
title_opts=opts.TitleOpts(title="全国药店药品销售额占比", pos_right="center"),
legend_opts=opts.LegendOpts(align="left", pos_left='7%', pos_bottom='14%')
)
)
# 创建一个组合图表实例
grid = (
Grid()
.add(bar