数据分析综合实战(三)
南丁格尔玫瑰图
南丁格尔玫瑰主要通过绘制饼状图进行实现,其中一个关键点是设置rosetype参数为area,具体实现步骤如下:
import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
# 导入Excel文件
df = pd.read_excel('data3.xls')
x_data = df['地区']
y_data = df['累计']
# 将数据转换为列表加元组的格式([(key1, value1), (key2, value2)])
data = [list(z) for z in zip(x_data, y_data)]
# 数据排序
data.sort(key=lambda x: x[1])
# 创建饼形图并设置画布大小
pie = Pie(init_opts=opts.InitOpts(width='800px', height='400px'))
# 为饼形图添加数据
pie.add(
series_name="地区", # 序列名称
data_pair=data, # 数据
radius=["8%", "160%"], # 内外半径
center=["60%", "80%"], # 位置
rosetype='area', # 玫瑰图
color='auto' # 颜色自动渐变
)
pie.set_global_opts(
# 不显示图例
legend_opts=opts.LegendOpts(is_show=False),
# 视觉映射
visualmap_opts=opts.VisualMapOpts(is_show=False,
min_=100, # 颜色条最小值
max_=450000, # 颜色条最大值
)
)
pie.set_series_opts(
# 序列标签
label_opts=opts.LabelOpts(position='inside', # 标签位置
rotate=45,
font_size=8) # 字体大小
# formatter="{b}: {c}") # 标签格式
)
# 渲染图表到HTML文件,存放在程序所在目录下
pie.render("mypie1.html")
双y轴可视化数据分析表图的实现(柱形图+折线图)
双y轴顾名思义就是两个y轴,下面实现柱状图+折线图双y轴图表的绘制,其中柱形图y轴表示月销量,折线图y轴表示3个平台的月平均销量,效果如下图所示。 实现双y轴可视化分析图表的两个关键字:一是使用Bar模块的extend_axis()方法扩展y轴;二是对add_yaxis()方法的yaxis_index参数进行设置,该参数用于指定y轴的索引值,从0开始。双y轴索引值分别0和1。
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
import pandas as pd
import numpy
# 导入Excel文件
df = pd.read_excel('books2.xlsx')
x_data = list(df['月份'])
y1 = list(df['京东'])
y2 = list(df['天猫'])
y3 = list(df['自营'])
# 颜色列表
colors = ["#5793f3", "#FFD700", "#675bba"]
# 求平均值并保留整数位
y_average = list(((df['京东'] + df['天猫'] + df['自营']) / 3).apply(numpy.round))
# 绘制柱形图
legend_list = ["京东", "天猫", "自营"]
bar = (
Bar(init_opts=opts.InitOpts(width="1000px", height="500px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="京东",
yaxis_data=y1,
color=colors[0],
yaxis_index=0,
)
.add_yaxis(
series_name="天猫", yaxis_data=y2, color=colors[1]
)
.add_yaxis(
series_name="自营", yaxis_data=y3, color=colors[2]
)
.extend_axis(yaxis=opts.AxisOpts())
)
# 绘制折线图
line = Line()
line.add_xaxis(xaxis_data=x_data)
line.add_yaxis(
series_name="平均销量",
y_axis=y_average, # y轴平均值
color='red',
yaxis_index=1,
)
# 渲染图表到HTML文件,存放在程序所在目录下
bar.overlap(line).render("barline.html")
饼状图与环形图组合图表的实现
饼状图与环形图组合,并且饼形图展示 “北上广”三大主要城市的销量情况,环形图展示其他省份的销量情况。 绘制饼形图与环形图组合图表的一个关键点是创建两个饼形图,并设置不同的半径参数,具体实现如下。
import pyecharts.options as opts
from pyecharts.charts import Pie
# 饼形图数据
x1 = ["北京", "上海", "广州"]
y1 = [1168, 890, 578]
data1 = [list(z) for z in zip(x1, y1)]
# 环形图数据
x2 = ["北京", "上海", "河南省", "广州", "湖南省", "四川省", "湖北省", "河北省", "江苏省", "浙江省"]
y2 = [1168, 890, 234, 578, 345, 225, 188, 101, 999, 1300]
data2 = [list(z) for z in zip(x2, y2)]
# 饼形图与环形图组合
(
Pie(init_opts=opts.InitOpts(width="1000px", height="600px"))
# 饼形图
.add(
series_name="销售地区",
data_pair=data1,
radius=[0, "30%"],
label_opts=opts.LabelOpts(position="inner"), # 饼形图标签
)
# 环形图
.add(
series_name="销售地区",
radius=["40%", "55%"],
data_pair=data2,
# 环形图标签
label_opts=opts.LabelOpts(
position="outside", # 标签位置
# 标签格式化
formatter="{a|{a}}{bg|}\n{hr|}\n {b|{b}: }{c} {per|{d}%} ",
background_color="#FAFAD2", # 背景色
border_color="#FFA500", # 边框颜色
border_width=1, # 边框宽度
border_radius=4, # 边框半径
# 利用富文本样式,定义标签效果
rich={
"a": {"color": "black", "lineHeight": 22, "align": "center"},
"bg": {
"backgroundColor": "#FFA500",
"width": "100%",
"align": "right",
"height": 22,
"borderRadius": [4, 4, 0, 0],
},
"hr": {
"borderColor": "#aaa",
"width": "100%",
"borderWidth": 0.5,
"height": 0,
},
"b": {"fontSize": 14, "lineHeight": 33},
"per": {
"color": "#eee",
"backgroundColor": "#334455",
"padding": [2, 4],
"borderRadius": 2,
},
},
),
)
.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))
.set_series_opts(
tooltip_opts=opts.TooltipOpts(
trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
)
)
.render("mypies.html")
)
转载自:https://juejin.cn/post/7352762245150441508