如何利用Python pyecharts绘制饼图

发布时间:2021-12-17 12:29:27 作者:小新
来源:亿速云 阅读:742
# 如何利用Python pyecharts绘制饼图

## 一、pyecharts简介

pyecharts是基于Echarts的Python可视化库,能够生成高度交互式的图表。相较于Matplotlib等传统库,pyecharts具有以下优势:

1. **丰富的图表类型**:支持30+种图表类型
2. **交互性强**:支持缩放、拖拽、数据筛选等操作
3. **美观的默认样式**:无需复杂配置即可生成专业级图表
4. **Web友好**:可轻松集成到Flask/Django等Web框架

## 二、环境准备

### 安装pyecharts
```bash
pip install pyecharts

版本检查

import pyecharts
print(pyecharts.__version__)  # 需要1.9.0及以上版本

三、基础饼图绘制

3.1 最简单的饼图

from pyecharts.charts import Pie

data = [("苹果", 45), ("香蕉", 30), ("橙子", 25)]
pie = Pie()
pie.add("", data)
pie.render("basic_pie.html")

3.2 主要参数说明

四、样式定制化

4.1 颜色与标签设置

pie = Pie()
pie.add(
    series_name="水果销量",
    data_pair=data,
    label_opts=opts.LabelOpts(
        formatter="{b}: {c} ({d}%)",  # b:名称 c:值 d:百分比
        color="#333"
    ),
    itemstyle_opts=opts.ItemStyleOpts(
        border_width=1,
        border_color="#fff"
    )
)

4.2 环形图实现

pie.add(
    series_name="",
    data_pair=data,
    radius=["40%", "75%"]  # 内半径40%,外半径75%
)

4.3 南丁格尔玫瑰图

pie.add(
    series_name="",
    data_pair=data,
    radius=["30%", "120%"],
    rosetype="area"  # 可选'radius'或'area'
)

五、高级功能

5.1 多级饼图(嵌套饼图)

inner_data = [("苹果", 45), ("香蕉", 30), ("橙子", 25)]
outer_data = [("北方", 60), ("南方", 40)]

pie = Pie()
pie.add(
    "地区",
    outer_data,
    radius=["50%", "70%"],
    label_opts=opts.LabelOpts(is_show=False)
).add(
    "水果",
    inner_data,
    radius=["0%", "45%"],
    label_opts=opts.LabelOpts(position="inner")
)

5.2 动态数据更新

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker

pie = Pie()
pie.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
pie.set_global_opts(
    title_opts=opts.TitleOpts(title="动态数据示例"),
    legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%")
)
pie.render("dynamic_pie.html")

六、交互功能增强

6.1 添加点击事件

from pyecharts.commons.utils import JsCode

pie = Pie()
pie.add(
    series_name="",
    data_pair=data,
    label_opts=opts.LabelOpts(
        formatter=JsCode(
            "function(params){return params.name+':'+params.value+'('+params.percent+'%)';}"
        )
    )
)

6.2 数据筛选与高亮

pie.set_series_opts(
    emphasis_opts=opts.EmphasisOpts(
        itemstyle_opts=opts.ItemStyleOpts(
            shadow_blur=10,
            shadow_offset_x=0,
            shadow_color="rgba(0, 0, 0, 0.5)"
        )
    )
)

七、实际应用案例

7.1 电商销售占比分析

sales_data = [
    ("手机", 1560),
    ("电脑", 980),
    ("家电", 760),
    ("服饰", 450),
    ("食品", 320)
]

pie = Pie(init_opts=opts.InitOpts(width="800px", height="600px"))
pie.add(
    "",
    sales_data,
    radius=["35%", "60%"],
    label_opts=opts.LabelOpts(
        position="outside",
        formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
        background_color="#eee",
        border_color="#aaa",
        border_width=1,
        border_radius=4,
        rich={
            "a": {"color": "#999", "lineHeight": 22, "align": "center"},
            "abg": {
                "backgroundColor": "#e3e3e3",
                "width": "100%",
                "align": "right",
                "height": 22,
                "borderRadius": [4, 4, 0, 0],
            },
            "hr": {
                "borderColor": "#aaa",
                "width": "100%",
                "borderWidth": 0.5,
                "height": 0,
            },
            "b": {"fontSize": 16, "lineHeight": 33},
            "per": {
                "color": "#eee",
                "backgroundColor": "#334455",
                "padding": [2, 4],
                "borderRadius": 2,
            },
        },
    ),
)
pie.set_global_opts(title_opts=opts.TitleOpts(title="电商销售占比分析"))
pie.render("ecommerce_sales.html")

八、常见问题解决

  1. 中文显示问题

    from pyecharts.globals import CurrentConfig
    CurrentConfig.ONLINE_HOST = "https://cdn.jsdelivr.net/npm/echarts@latest/dist/"
    
  2. 图表显示不全

    pie = Pie(init_opts=opts.InitOpts(width="1000px", height="800px"))
    
  3. 数据更新延迟

    • 确保使用最新版本
    • 检查数据格式是否正确

九、最佳实践建议

  1. 数据量控制:饼图适合展示5-7个分类,过多会导致视觉混乱
  2. 颜色搭配:使用对比明显的颜色,避免相近色
  3. 标签处理:对小比例数据使用引导线或合并显示
  4. 移动端适配:设置响应式布局参数

十、完整示例代码

from pyecharts.charts import Pie
from pyecharts import options as opts

# 数据准备
data = [("产品A", 25), ("产品B", 35), ("产品C", 20), ("产品D", 15), ("其他", 5)]

# 创建饼图
pie = (
    Pie(init_opts=opts.InitOpts(theme="light", width="900px", height="500px"))
    .add(
        series_name="销售占比",
        data_pair=data,
        radius=["30%", "70%"],
        center=["50%", "50%"],
        label_opts=opts.LabelOpts(
            formatter="{b}: {c} ({d}%)",
            font_size=14,
            color="#333"
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="2023年产品销售占比",
            subtitle="数据截止至2023年12月",
            pos_left="center"
        ),
        legend_opts=opts.LegendOpts(
            orient="vertical",
            pos_top="15%",
            pos_left="2%"
        ),
        tooltip_opts=opts.TooltipOpts(
            trigger="item",
            formatter="{a} <br/>{b}: {c} ({d}%)"
        )
    )
    .set_series_opts(
        emphasis_opts=opts.EmphasisOpts(
            itemstyle_opts=opts.ItemStyleOpts(
                shadow_blur=10,
                shadow_offset_x=0,
                shadow_color="rgba(0, 0, 0, 0.5)"
            )
        )
    )
)

# 生成HTML文件
pie.render("final_pie_chart.html")

通过以上内容,您应该已经掌握了使用pyecharts绘制各种饼图的技巧。实际应用中可根据需求灵活组合这些功能,创建出更专业的数据可视化作品。 “`

推荐阅读:
  1. canvas如何绘制饼图
  2. 如何基于Python绘制美观动态圆环图、饼图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python pyecharts

上一篇:如何使用python连接数据库后通过占位符添加数据

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》