likes
comments
collection
share

数据分析综合实战(三)

作者站长头像
站长
· 阅读数 59

南丁格尔玫瑰图

南丁格尔玫瑰主要通过绘制饼状图进行实现,其中一个关键点是设置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
评论
请登录