惊叹,Pyecharts绘制饼图原来可以如此漂亮!

用Python快速制作饼图——简易Pyecharts饼状图教程 在数据可视化中,饼图常常被用来展示不同类别之间的数量比例关系。与其他类型的图表相比,饼图更加直观、易于理解。本文将介绍如何使用Python的Pyecharts库快速绘制简单的饼图。如果你想进一步学习数据可视化,可以使用Pyecharts绘制更多类型的图表,如折线图、柱状图等。运行程序后,将会在当前目录下生成一个名为simple_pie_chart.html的文件。用浏览器打开这个文件,即可查看生成的饼图。每个元素是一个长度为2的元组,第一个元素表示分类名称,第二个元素表示该分类的值。 阅读详情

来源:Python数据之道

作者:Peter

整理:Lemon

利用Pyecharts玩转饼图

饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用 pyecharts 来绘制各种满足不同需求的饼图,包含:

  • 基础饼图+改变饼图位置颜色

  • 环状饼图

  • 内嵌饼图

  • 多饼图

  • 玫瑰图


开始之前,先来看看部分效果:

注:文末提供本文的源码获取方式,供大家练习

导入库

本文中使用的还是 pandas+pyecharts 组合,在jupyter notebook 中进行绘图。首先导入所需要的各种库:

基础饼图

模拟数据

我们自行模拟了一份消费数据,包含5个消费项目:住宿+餐饮+交通+服装+红包,具体数据如下:

# 生成数据
df = pd.DataFrame({"消费":["住宿","餐饮","交通","服装","红包"],
                   "数据":[2580,1300,500,900,1300]
                  })
df

将消费和数据中的具体数据转成列表形式:

绘图

代码的具体解释见注释:

c = (
    Pie()
    .add("", [list(z) for z in zip(x_data, y_data)])   # zip函数两个部分组合在一起list(zip(x,y))-----> [(x,y)]
    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度开支"))  # 标题
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 数据标签设置
)

c.render_notebook()  

改变位置和颜色

上面生成的饼图是使用 pyecharts 自带的颜色和位置,有时候我们需要做下改变:

现在我们生成的饼图如下显示:

  • 颜色变成了我们设置的颜色

  • 位置更靠左了

视频效果如下:

改变图例位置

数据生成

上面的图例是水平方向排列的,而且个数比较少。如果我们的图例比较多,需要改成竖直方向,同时实现翻页滚动功能。

在这里我们使用的是 pyecharts 中自带的数据:

1、Faker.choose() :是用来生成数据标签,有3种不同的取值情况

2、Faker.values() 是用来生成具体的数据,随机生成

绘图

还是通过上面的绘图方法,加入数据同时添加各种配置项:

视频效果如下:

环状饼图

环状饼图主要是通过 add 方法中的 radius 参数来实现的。实现过程如下:

x_data = ["小明", "小红", "张三", "李四", "王五"]
y_data = [335, 310, 234, 135, 548]

c = (
    Pie(init_opts=opts.InitOpts(width="1600px", height="1000px"))   # 图形的大小设置
    .add(
        series_name="访问来源",
        data_pair=[list(z) for z in zip(x_data, y_data)],
        radius=["15%", "50%"],   # 饼图内圈和外圈的大小比例
        center=["30%", "40%"],   # 饼图的位置:左边距和上边距
        label_opts=opts.LabelOpts(is_show=True),   # 显示数据和百分比  
    )
    .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}%)"
        ),
    )

c.render_notebook()

可以看到图形的中间是空的

内嵌饼图

内嵌饼图是指将两个甚至多个环状饼图放在一起,实现代码过程如下:

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

# 内部饼图
inner_x_data = ["直达", "营销广告", "搜索引擎","产品"]
inner_y_data = [335, 679, 548, 283]
inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]
# [['直达', 335], ['营销广告', 679], ['搜索引擎', 1548], [‘产品’, 283]]

# 外部环形(嵌套)
outer_x_data = ["搜索引擎", "邮件营销", "直达", "营销广告", "联盟广告", "视频广告", "产品", "百度", "谷歌","邮件营销", "联盟广告"]
outer_y_data = [335, 135, 147, 102, 220, 310, 234, 135, 648, 251]
outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)]

c = (
     # 初始化
    Pie(init_opts=opts.InitOpts(
        width="900px",  # 设置图形大小
        height="800px",
        theme=ThemeType.SHINE))  # 选择主题

    # 内部饼图
    .add(
        series_name="版本3.2.1",  # 图形名称
        center=["50%", "35%"],  # 饼图位置
        data_pair=inner_data_pair,  # 系列数据项,格式为 [(key1, value1), (key2, value2)]
        radius=["25%", "40%"],  # 饼图半径 数组的第一项是内半径,第二项是外半径
        label_opts=opts.LabelOpts(position='inner'), # 标签设置在内部
    )

    # 外部嵌套环形图
    .add(
        series_name="版本3.2.9",  # 系列名称
        center=["50%", "35%"],  # 饼图位置
        radius=["40%", "60%"],  # 饼图半径 数组的第一项是内半径,第二项是外半径
        data_pair=outer_data_pair, # 系列数据项,格式为 [(key1, value1), (key2, value2)]

        # 标签配置项 
        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,
                },
            },
        ),
    )

    # 全局配置项
    .set_global_opts(
        xaxis_opts = opts.AxisOpts(is_show = False),   #隐藏X轴刻度
        yaxis_opts = opts.AxisOpts(is_show = False),    #隐藏Y轴刻度
        legend_opts = opts.LegendOpts(is_show = True),  #隐藏图例
        title_opts = opts.TitleOpts(title = None),    #隐藏标题
                    )

    # 系统配置项
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item",
            formatter="{a} <br/>{b}: {c} ({d}%)"
        ),
        label_opts=opts.LabelOpts(is_show=True)  # 隐藏每个触角标签
    )
)

c.render_notebook()
视频效果如下:

多饼图

有时候我们需要将多个图形放在一个大画布中,需要用到子图的制作。

在下面的代码中每个 add() 都是一个图形的绘制,我们绘制了4个饼图;同时center指定每个图形的位置,radius指定每个饼图内外圈的大小

c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(["剧情", "其他"], [30, 70])],
        center=["20%", "30%"],  # 位置
        radius=[60, 80],   # 每个饼图内外圈的大小
    )
    .add(
        "",
        [list(z) for z in zip(["奇幻", "其他"], [40, 60])],
        center=["55%", "30%"],
        radius=[60, 80],
    )
    .add(
        "",
        [list(z) for z in zip(["爱情", "其他"], [24, 76])],
        center=["20%", "70%"],
        radius=[60, 80],
    )
    .add(
        "",
        [list(z) for z in zip(["惊悚", "其他"], [11, 89])],
        center=["55%", "70%"],
        radius=[60, 80],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"),
        legend_opts=opts.LegendOpts(
            type_="scroll", pos_top="20%", pos_left="80%", orient="vertical"
        ),
    )
)

c.render_notebook()
视频效果如下:

玫瑰图

玫瑰图中每个部分的大小和粗细都是不同的

v = Faker.choose()
c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(v, Faker.values())],   # 两个值
        radius=["30%", "60%"],  # 大小
        center=["25%", "50%"],  # 位置
        rosetype="radius",   
        label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据
    )
    .add(
        "",
        [list(z) for z in zip(v, Faker.values())],
        radius=["30%", "60%"],
        center=["75%", "50%"],
        rosetype="area",
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))
)

c.render_notebook()
视频效果如下:

作者简介

Peter,硕士毕业僧一枚,从电子专业自学Python入门数据行业,擅长数据分析及可视化。喜欢数据,坚持跑步,热爱阅读,乐观生活。个人格言:不浮于世,不负于己

个人站点:www.renpeter.cn,欢迎常来小屋逛逛


本文来自公众号读者投稿,欢迎各位童鞋向公号投稿,点击下面图片了解详情!

源码文件获取

为方便大家练习,已将整理好的源代码(jupyter notebook文件)分享给各位同学,大家可以在下面的公众号 「柠檬数据」 回复 pie2020 来获取。

python+re正则表达式匹配指定10位整数 \ 小数 \ 整数 python+re正则表达式匹配整数和小数 re匹配整数可指定位数 re匹配小数 阅读详情

相关推荐

echarts常用饼图、圆环图、漏斗图示例

最近做可视化比较多,就常用的图表类型做了一下总结。 因为做可视化的图表代码量非常大,所以会把echarts图表单独抽离出来,封装成一个组件,也可以复用,所以这里我直接把封装的组件直接放在这里,是可以直接拿来用的,根据所需稍作修改即可。 这里都是用的vue3,其实和vue2差不多,各式各样的花里胡哨的图表无非就是option配置不同,如果使用的是vue2,在写法上稍作修改即可 vue2、vue3组件封装模板链接echarts图表组件封装模板 1. 精简圆环图 <template&g...

专注于技术,分享实战经验,探索技术边界,用代码构建更美的数字世界。 1万+

用python实现PyEcharts中的饼图

用python实现PyEcharts中的折线图 笔记仅是个人的学习笔记总结,如有雷同请见谅 1. Pie class pyecharts.charts.Pie class Pie( # 初始化配置项,参考 `global_options.InitOpts` init_opts: opts.InitOpts = opts.InitOpts() ) func pyecharts.charts.Pie.add def add( # 系列名称,用于 tooltip 的显示,lege.

白痴式学习 2842

用Python和Pyecharts绘制多种华丽的散点图

Pyecharts是一个基于Python的强大数据可视化库,它提供了丰富的图表类型和定制选项,可以帮助我们创建各种炫酷的散点图。无论是基本的散点图还是更复杂的气泡散点图,Pyecharts都提供了灵活的功能和定制选项,使得数据可视化变得简单而有趣。除了数据点的大小,我们还可以使用其他属性来定制散点图的样式,例如颜色、形状等。除了基本的散点图,Pyecharts还支持许多其他类型的散点图,例如气泡散点图、3D散点图等。在这个例子中,我们在数据中添加了一个额外的值,用于表示气泡的大小。参数用于设置图表标题,

TechGlide的博客 425

pyecharts 饼图绘制

关于饼图的绘制基本的饼图环形图玫瑰饼图 基本的饼图 import pandas as pd import numpy as np from pyecharts.charts import * import pyecharts.options as opts #数据 cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'] data = [123, 153, 89, 107, 98, 23] pie=Pie() pie.add("",[lis

weixin_43985376的博客 5646

【漏斗图】——3

在这里,你将不再受限于单调的表格和图表,而是学会如何运用pyecharts这一强大的Python数据可视化库,将复杂的数据转化为令人惊叹的交互式图形。从基础的柱状图、折线图到高级的地理热力图、关系图,每一种图形都将是你讲述数据故事的得力助手。在这个数据为王的时代,每一次点击、每一次交易、每一份报告背后都隐藏着无尽的故事与洞察。但你是否曾苦恼于如何将这些冰冷的数据转化为直观、吸引人的视觉盛宴?让我们一起,用代码绘制世界,用图形讲述故事。这一切,都从这里开始 —— 《pyecharts图形绘制大师班》。

2202_76035290的博客 171

【仪表盘图】——3

在这里,你将不再受限于单调的表格和图表,而是学会如何运用pyecharts这一强大的Python数据可视化库,将复杂的数据转化为令人惊叹的交互式图形。从基础的柱状图、折线图到高级的地理热力图、关系图,每一种图形都将是你讲述数据故事的得力助手。在这个数据为王的时代,每一次点击、每一次交易、每一份报告背后都隐藏着无尽的故事与洞察。但你是否曾苦恼于如何将这些冰冷的数据转化为直观、吸引人的视觉盛宴?让我们一起,用代码绘制世界,用图形讲述故事。这一切,都从这里开始 —— 《pyecharts图形绘制大师班》。

2202_76035290的博客 190

【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!

来源:Python数据之道作者:Peter整理:Lemon利用Pyecharts玩转饼图饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利...

fengdu78的博客 1万+

【仪表盘图】——6

在这里,你将不再受限于单调的表格和图表,而是学会如何运用pyecharts这一强大的Python数据可视化库,将复杂的数据转化为令人惊叹的交互式图形。从基础的柱状图、折线图到高级的地理热力图、关系图,每一种图形都将是你讲述数据故事的得力助手。在这个数据为王的时代,每一次点击、每一次交易、每一份报告背后都隐藏着无尽的故事与洞察。但你是否曾苦恼于如何将这些冰冷的数据转化为直观、吸引人的视觉盛宴?让我们一起,用代码绘制世界,用图形讲述故事。这一切,都从这里开始 —— 《pyecharts图形绘制大师班》。

2202_76035290的博客 225

python饼图 立体_【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!

利用Pyecharts玩转饼图饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用 pyecharts 来绘制各种满足不同需求的饼图,包含:基础饼图+改变饼图位置颜色环状饼图内嵌饼图多饼图玫瑰图开始之前,先来看看部分效果:注:文末提供本文的源码获取方式,供大家练习导入库本文中使用的还是 pandas+pyecharts 组合,在jupyter note...

weixin_39761573的博客 1458

开源项目 ruoyi-sso-oauth2(一)环境配置

Ruoyi若依实现单点登录SSO、oauth2认证

Xiaoweidumpb 9684

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 494

label mpchart 饼图_惊叹,Pyecharts绘制饼图原来可以如此漂亮!

利用Pyecharts玩转饼图饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用pyecharts来绘制各种满足不同需求的饼图,包含:基础饼图+改变饼图位置颜色环状饼图内嵌饼图多饼图玫瑰图开始之前,先来看看部分效果:注:文末提供本文的源码获取方式,供大家练习导入库本文中使用的还是pandas+pyecharts组合,在jupyter note...

weixin_39764603的博客 380

IATF16949核心职位全解析

TM / Top MgmtMR / QMRProcess OwnerQMQAQCSQECQEPQEPETEMEIEPM / PJMFMEA ModeratorMSA CoordinatorSPC CoordinatorCM / CCB内审员CP / CPK

weixin_49938552的博客 973

饼图 formatter position定义位置_惊叹,Pyecharts绘制饼图原来可以如此漂亮!

关注上方“Python数据科学”,选择星标,精彩文章不会错过!来源:Python数据之道作者:Peter整理:Lemon利用Pyecharts玩转饼图饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用 pyecharts 来绘制各种满足不同需求的饼图,包含:基础饼图+改变饼图位置颜色环状饼图内嵌饼图多饼图玫瑰图开始之前,先来看看部分效果:注...

weixin_39525300的博客 1256

COLMAP生成MVSNet数据集

COLMAP生成MVSNet数据集

qq_43307074的博客 5637

Abaqus数据导出技巧:轻松处理大量XY数据

通过上述三种方法,我们可以解决Abaqus中大量XY数据导出的问题。无论是使用插件、编写Python脚本,还是利用Abaqus的内置报告功能,都可以帮助我们高效地处理数据。希望这篇博客能够帮助到你,提高你在Abaqus使用过程中的数据处理效率。

m0_62153576的博客 1916

开始位置 环状图_惊叹,Pyecharts绘制饼图原来可以如此漂亮!

腾讯课堂 | Python网络爬虫与文本分析(戳一戳)~~作者:Peter整理:Lemon利用Pyecharts玩转饼图饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用 pyecharts 来绘制各种满足不同需求的饼图,包含:基础饼图+改变饼图位置颜色环状饼图内嵌饼图多饼图玫瑰图开始之前,先来看看部分效果:注:文末提供本文的源码获取方式,...

weixin_39866419的博客 514

一个非常简单的变分量子分类器 (VQC)

​ 在之前的帖子(这里和这里)中,我已经开始谈论 QML,为什么以及如何学习,从现在开始,我将开始分享我的研究和发现,到目前为止,这些都是非常基本的。​

gongdiwudu的专栏 6208

惊叹,Pyecharts绘制图表原来可以如此漂亮!

本文转载自公众号「杰哥的IT之旅」,作者旧时晚风拂晓城 Pyecharts一、Pyecharts简介和安装二、绘制地理图表三、柱形图四、饼图五、环图六、玫瑰图七、词云图八、仪表盘九、水球图十、折线图十一、箱形图 一、Pyecharts简介和安装 1、简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。 简洁的 API 设计,使用如丝

xu_aml的博客 1966

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2847

系统盘被 1Panel 撑爆了?一键脚本 3 分钟搞定无损迁移!(1Panel如何快速无损的修改安装目录)

很多用户因默认安装导致 1Panel 面板占满系统盘 😱,本文详解了为何常规快照迁移会失效,并提供了通过**一键自动化脚本**实现无损迁移的完美方案 🛠️。无论你是 NAS 用户还是服务器管理员,都能找到安全扩容的最佳实践。

XiaoqiangClub的博客 1279

Pyecharts 组合图形绘制实践

来源:Python数据之道作者:Peter整理:LemonPyecharts 组合图形绘制实践大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图:炫酷!用Python制作漂...

Python数据之道 5983

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Python】Pyecharts 组合图形绘制实践

来源:Python数据之道作者:Peter整理:LemonPyecharts 组合图形绘制实践大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图:炫酷!用Python制作...

fengdu78的博客 2102

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

matlab 在图片上绘制热力图_Pyecharts 组合图形绘制实践

来源:Python数据之道作者:Peter整理:LemonPyecharts 组合图形绘制实践大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图:炫酷!用Python制作漂亮的流动桑基图惊叹,Pyecharts绘制饼图原来可以如此漂亮!有同学提了一个问题,在 Pyecharts 中如何绘制多个图形,今天我们来分享下组合图的绘制。在实际的工作需求中,我们经常需要绘制多个甚至多...

weixin_39616287的博客 740

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

matlab 在图片上绘制热力图_【Python】Pyecharts 组合图形绘制实践

来源:Python数据之道作者:Peter整理:LemonPyecharts 组合图形绘制实践大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图:炫酷!用Python制作漂亮的流动桑基图惊叹,Pyecharts绘制饼图原来可以如此漂亮!有同学提了一个问题,在 Pyecharts 中如何绘制多个图形,今天我们来分享下组合图的绘制。在实际的工作需求中,我们经常需要绘制多个甚至...

weixin_39604280的博客 481

Python数据可视化终极指南:使用Pyecharts创建30+种交互式图表

在这篇文章中,你将学习如何利用Pyecharts这个强大的Python数据可视化库,创建专业级的交互式图表。无论你是数据分析师、开发者还是研究人员,掌握Pyecharts都能让你在数据可视化领域如虎添翼。Pyecharts基于百度开源的ECharts构建,提供了超过30种图表类型,支持链式调用API,让数据可视化变得简单高效。🚀 ## 🚀 快速上手:5分钟创建你的第一个图表 ### 安装与

gitblog_00633的博客 311
上一篇: pip 的高阶玩法
下一篇: 5 款最佳最牛代码比较神器
Python数据之道
博客等级 码龄9年 3072粉丝 139原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值