使用Pyecharts绘制雷达图(附完整代码)

雷达图是一种常用于展示多维度数据的图表,它以圆形为基础,将各个维度数据映射到圆周上,通过线条连接不同的数据点,形成一个封闭的区域。在这个区域中,每个维度的重要性可以通过颜色和区域面积来展示。

在Python中,我们可以使用第三方库pyecharts来实现雷达图的绘制。下面我们将通过一个具体的例子,来教会大家如何使用Python和pyecharts来绘制雷达图。

数据概览:

首先,让我们看一下需要绘制的数据。假设我们想要展示全国药店销售额的占比,具体数据如下:

全国药店药品销售额占比

药品类型

占比(%

化学药

33

中成药

45

生物制品

3

保健品

9

中药饮片

6

其他

4

可视化实现:

接下来

  1. 导入必要的库和模块:
from pyecharts import options as opts
from pyecharts.charts import Radar

这行代码导入了pyecharts库的配置模块(options)和雷达图模块(Radar),用于创建和配置雷达图。

  1. 定义雷达图的数据:
    data = [{"value": [33, 45, 3, 9, 6, 4], "name": "药品类型"}]
    

    这行代码定义了雷达图的数据,包括数值和名称。在这个例子中,使用一个字典包含了药品类型的数值列表和名称。

  2. 定义雷达图的维度配置:
    c_schema = [
        {"name": "化学药", "max": 50, "min": 0},
        {"name": "中成药", "max": 50, "min": 0},
        {"name": "生物制品", "max": 50, "min": 0},
        {"name": "保健品", "max": 50, "min": 0},
        {"name": "中药饮片", "max": 50, "min": 0},
        {"name": "其他", "max": 50, "min": 0},
    ]
    

    这段代码定义了雷达图的各个维度的配置。每个维度由一个字典表示,包括名称(name)、最大值(max)和最小值(min)。在这个例子中,定义了6个维度,分别对应不同的药品类型。

  3. 创建雷达图对象:
    c = (
        Radar()
        .add_schema(
            schema=c_schema,
            shape="circle",
            center=["50%", "50%"],
            radius="80%",
            angleaxis_opts=opts.AngleAxisOpts(
                max_=360,
                is_clockwise=False,
                interval=5,
                axistick_opts=opts.AxisTickOpts(is_show=False),
                axisline_opts=opts.AxisLineOpts(is_show=False),
                axislabel_opts=opts.LabelOpts(is_show=False),
                splitline_opts=opts.SplitLineOpts(is_show=False),
            ),
            radiusaxis_opts=opts.RadiusAxisOpts(
                min_=0,
                max_=50,
                interval=10,
                splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),
            ),
            polar_opts=opts.PolarOpts(),
            splitarea_opt=opts.SplitAreaOpts(is_show=False),
            splitline_opt=opts.SplitLineOpts(is_show=False),
        )
    )
    

    这段代码创建了一个雷达图对象。通过链式调用的方式,设置了雷达图的各种配置项,包括形状、中心位置、半径、角度轴、半径轴等。具体的配置可以参考代码中的注释。

  4. 添加数据系列:
    .add(
        series_name="药品类型",
        data=data,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),
        linestyle_opts=opts.LineStyleOpts(width=1),
    )
    

    这段代码向雷达图对象中添加了数据系列。通过.add()方法,设置了数据系列的名称、数据、数据区域的样式和线条的样式。

  5. 设置颜色和全局配置:
    .set_colors(["#4587E7"])
    .set_global_opts(title_opts=opts.TitleOpts(title="中药材消费者画像数据"))
    

    这段代码设置了雷达图的颜色和全局配置。.set_colors()设置了雷达图的颜色为指定的颜色值。.set_global_opts()设置了全局配置,其中包括标题的配置。

  6. 渲染和保存图表:
    .render("04.html")
    

    这段代码将图表渲染为HTML文件,并保存为"04.html"。

以下是完整的代码实现:

from pyecharts import options as opts      # 导入 pyecharts 库的配置模块
from pyecharts.charts import Radar         # 导入雷达图模块

data = [{"value": [33, 45, 3, 9, 6, 4], "name": "药品类型"}]   # 定义雷达图的数据,包括数值和名称

c_schema = [                      # 定义雷达图的各个维度的配置
    {"name": "化学药", "max": 50, "min": 0},
    {"name": "中成药", "max": 50, "min": 0},
    {"name": "生物制品", "max": 50, "min": 0},
    {"name": "保健品", "max": 50, "min": 0},
    {"name": "中药饮片", "max": 50, "min": 0},
    {"name": "其他", "max": 50, "min": 0},
]

c = (                             # 创建雷达图对象
    Radar()
    .add_schema(                   # 添加雷达图的配置
        schema=c_schema,           # 设置维度的配置
        shape="circle",            # 设置雷达图的形状为圆形
        center=["50%", "50%"],     # 设置雷达图的中心位置为页面的中心
        radius="80%",              # 设置雷达图的半径为页面宽度的80%
        angleaxis_opts=opts.AngleAxisOpts(          # 设置角度轴的配置
            max_=360,                               # 角度轴的最大值为360度
            is_clockwise=False,                     # 不顺时针显示角度轴
            interval=5,                             # 设置角度轴刻度间隔为5度
            axistick_opts=opts.AxisTickOpts(is_show=False),      # 不显示角度轴刻度线
            axisline_opts=opts.AxisLineOpts(is_show=False),      # 不显示角度轴线
            axislabel_opts=opts.LabelOpts(is_show=False),        # 不显示角度轴标签
            splitline_opts=opts.SplitLineOpts(is_show=False),    # 不显示角度轴分割线
        ),
        radiusaxis_opts=opts.RadiusAxisOpts(          # 设置半径轴的配置
            min_=0,                                 # 半径轴的最小值为0
            max_=50,                                # 半径轴的最大值为50
            interval=10,                            # 设置半径轴刻度间隔为10
            splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),     # 显示半径轴的分隔区域,设置透明度为1
        ),
        polar_opts=opts.PolarOpts(),                # 极坐标系配置项
        splitarea_opt=opts.SplitAreaOpts(is_show=False),       # 不显示分割区域
        splitline_opt=opts.SplitLineOpts(is_show=False),       # 不显示分割线
    )
    .add(                              # 添加雷达图的数据系列
        series_name="药品类型",         # 数据系列的名称
        data=data,                     # 数据
        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),       # 设置数据区域的透明度为0.1
        linestyle_opts=opts.LineStyleOpts(width=1),           # 设置线条的宽度为1
    )
    .set_colors(["#4587E7"])          # 设置颜色
    .set_global_opts(title_opts=opts.TitleOpts(title="中药材消费者画像数据"))   # 设置全局配置,包括标题
    .render("04.html")                # 将图表渲染为 HTML 文件
)

输出展示:

  • 16
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值