【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

这篇具有很好参考价值的文章主要介绍了【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【📊plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】!

【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】,Matplotlib之旅:零基础精通数据可视化,matplotlib,信息可视化,python,数据可视化

利用Matplotlib进行数据可视化示例


【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】,Matplotlib之旅:零基础精通数据可视化,matplotlib,信息可视化,python,数据可视化

🎨 一、饼图初探:基本概念与用途

  饼图,作为一种常见的数据可视化工具,能够直观地展示数据的分布和比例。在Python的数据可视化库Matplotlib中,plt.pie()函数就是用来绘制饼图的。通过它,我们可以轻松地创建出具有不同颜色、标签和标题的饼图,以展示数据的整体和部分之间的关系。

  首先,让我们通过简单的代码示例来了解一下plt.pie()函数的基本用法。

# 导入matplotlib库的pyplot模块,并简写为plt,该模块提供了类似于MATLAB的绘图功能。
import matplotlib.pyplot as plt

# 定义标签列表,用于表示饼图中的各个扇区。
labels = ['A', 'B', 'C', 'D']

# 定义数据列表,用于表示饼图中各个扇区的大小。
sizes = [20, 25, 45, 10]

# 设置全局字体为支持中文的字体'SimHei',确保在图中能够正确显示中文。
plt.rcParams['font.sans-serif'] = ['SimHei']

# 使用plt.pie()函数绘制饼图。其中:
# sizes参数指定了饼图中各个扇区的大小;
# labels参数指定了各个扇区的标签,
# autopct参数指定了扇区百分比的格式;
# startangle参数指定了饼图的起始角度(这里设置为90度,即从上方开始);
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)

# 使用plt.title()函数为饼图添加标题,标题内容为'示例饼图'。
plt.title('示例饼图')

# 使用plt.show()函数显示图形
# 在Jupyter Notebook等环境中,这一步不是必须的,但在普通Python脚本中需要这一步来展示图形。
plt.show()

  以上代码是一个简单的饼图绘制示例,使用了Matplotlib库中的pyplot模块。它首先设置了支持中文的字体,然后定义了标签和数据列表,接着调用plt.pie()函数绘制饼图,并设置了饼图的标题。最后,使用plt.show()函数显示图形:

【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】,Matplotlib之旅:零基础精通数据可视化,matplotlib,信息可视化,python,数据可视化

Fig.1 使用`plt.pie()`函数绘制基本的饼图

💡 二、深化理解:饼图的定制与优化

在掌握了plt.pie()函数的基本用法后,我们可以进一步定制和优化饼图,使其更加美观和实用。

  1. 个性化定制

    • 颜色与样式:通过colors参数,我们可以为饼图指定不同的颜色。同时,shadowexplode参数可以用于添加阴影和突出显示某个扇区。
    plt.pie(sizes, labels=labels, colors=['red', 'blue', 'green', 'yellow'], shadow=True, explode=(0, 0.1, 0, 0))
    
    • 标签与标题:除了之前提到的labelstitle参数外,我们还可以使用labeldistancetitledistance参数来调整标签和标题与饼图之间的距离。
    plt.pie(sizes, labels=labels, labeldistance=1.1, titledistance=1.2)
    
    • 饼图大小与位置:通过figsize参数,我们可以设置画布的大小,从而调整饼图的大小。而subplots_adjust参数则可以用于调整饼图在画布中的位置。
    plt.figure(figsize=(8, 6))
    plt.pie(sizes, labels=labels)
    plt.subplots_adjust(left=0.2, right=0.8, top=0.8, bottom=0.2)
    
  2. 高级优化

    • 数据排序:默认情况下,plt.pie()函数会按照数据的大小自动对扇区进行排序。如果我们需要按照特定的顺序显示扇区,可以通过sort参数进行控制。
    plt.pie(sizes, labels=labels, sort=False)
    
    • 数据显示:通过textprops参数,我们可以设置饼图上显示的数据标签的样式,包括字体大小、颜色等。
    plt.pie(sizes, labels=labels, textprops={'fontsize': 14, 'color': 'white'})
    
    • 缺失数据处理:当饼图的数据中存在零值或缺失值时,我们可以通过设置wedgeprops参数来控制这些扇区的显示方式,比如将其设置为透明或添加线条边框。
    plt.pie(sizes + [0], labels=labels + ['缺失数据'], wedgeprops={'edgecolor': 'black', 'linewidth': 2})
    
  3. 实战:个性化定制饼图

import matplotlib.pyplot as plt

# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']


def draw_customized_pie_chart(sizes, labels, colors, explode=None, autopct='%1.2f%%', startangle=90, shadow=True):
    """
    绘制自定义的饼图。

    参数:
    sizes (list): 饼图各部分的大小。
    labels (list): 饼图各部分的标签。
    colors (list): 饼图各部分的颜色。
    explode (list, optional): 饼图各部分突出的距离。默认为None。
    autopct (str, optional): 显示百分比的格式。默认为'%1.2f%%'。
    startangle (float, optional): 饼图的起始角度。默认为90。
    shadow (bool, optional): 是否添加阴影。默认为True。

    返回:
    None
    """
    # 创建一个新的图形,并设置其大小
    plt.figure(figsize=(8, 6))

    # 定义饼图的参数
    pie_params = {
        'x': sizes,
        'labels': labels,
        'colors': colors,
        'autopct': autopct,
        'startangle': startangle,
        'shadow': shadow,
        'explode': explode,
        'labeldistance': 1.1,
        'pctdistance': 0.7,
        'textprops': {'fontsize': 14, 'color': 'black'},
        'wedgeprops': {'edgecolor': 'black', 'linewidth': 1.5}
    }

    # 绘制饼图
    plt.pie(**pie_params)

    # 添加标题
    plt.title('定制和优化后的饼图', pad=20)

    # 调整子图的位置,确保饼图在画布中居中显示
    plt.subplots_adjust(left=0.1, right=0.8, top=0.9, bottom=0.1)

    # 显示图形
    plt.show()


# 示例数据
sizes = [20, 25, 35, 10, 10]
labels = ['A', 'B', 'C', 'D', '缺失数据']
colors = ['red', 'blue', 'green', 'yellow', 'lightgray']

# 调用函数绘制饼图
draw_customized_pie_chart(sizes, labels, colors, explode=(0, 0.1, 0, 0, 0))

  这段代码💻定义了一个超赞的👏函数draw_customized_pie_chart,这个函数可以绘制出各种自定义的饼图🥧!通过传入的参数📋,你可以轻松定制饼图的尺寸📐、标签🏷️、颜色🌈、突出显示部分💥、百分比显示格式🔍、起始角度🌐以及是否添加阴影🌑。函数内部使用了强大的matplotlib.pyplot库📊来绘制饼图,并且设置了全局字体为支持中文的SimHei字体🔡。

  除了这些,代码还展示了如何使用这个函数来绘制一个包含五个部分(A、B、C、D和缺失数据❌)的饼图。其中,B部分被突出显示💡,让整个饼图更加生动和引人注目👀。

  绘制完成后,饼图会在一个8x6英寸的窗口中🖥️显示出来,并且具有一个精美的标题🎯和适当的子图位置调整🔄,以确保饼图在画布中居中显示🎯。这样一来,你的饼图就会更加美观和易读啦!

🎉 效果展示

【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】,Matplotlib之旅:零基础精通数据可视化,matplotlib,信息可视化,python,数据可视化

Fig.2 使用`plt.pie()`函数定制个性化饼图

💫 三、交互式体验:动态饼图制作

  除了静态的饼图外,我们还可以利用Matplotlib的交互功能,制作可动态变化的饼图。这可以通过结合使用plt.pie()函数和事件处理函数来实现。

  下面是一个简单的示例代码,展示如何制作一个可以通过鼠标点击来切换扇区颜色的动态饼图:

import matplotlib
import matplotlib.pyplot as plt

# 设置matplotlib使用TkAgg作为其后端,TkAgg是一个基于Tkinter的GUI后端
matplotlib.use('TkAgg')

# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']

import matplotlib.colors as mcolors

# 饼图数据
sizes = [20, 25, 35, 10, 10]
labels = ['data1', 'data2', 'data3', 'data4', '缺失数据']
colors = ['red', 'blue', 'green', 'orange', 'lightgray']

# 绘制饼图
fig, ax = plt.subplots()
patches, _, _ = ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)

# 设置标题
ax.set_title('交互式的自定义饼图')

# 确保饼图是圆形的
ax.axis('equal')

# 保存每个扇区的原始颜色
original_colors = {patch: patch.get_facecolor() for patch in patches}


# 将颜色名称转换为 RGB 元组的函数
def color_name_to_rgb(color_name):
    return mcolors.to_rgb(color_name)


# 黄色的 RGB 值
yellow_rgb = color_name_to_rgb('yellow')


# 创建一个函数来处理鼠标点击事件
def onclick(event):
    for patch in patches:
        if patch.contains(event)[0]:  # 检查点击是否在扇区内
            # 获取扇区的当前颜色
            current_color = patch.get_facecolor()
            # 将当前颜色转换为 RGB 元组
            current_rgb = mcolors.to_rgb(current_color)

            # 检查当前颜色是否是黄色
            if current_rgb == yellow_rgb:
                # 如果是黄色,则还原为原始颜色
                patch.set_facecolor(original_colors[patch])
            else:
                # 否则,将颜色设置为黄色
                patch.set_facecolor('yellow')

            fig.canvas.draw_idle()  # 更新图形
            break

        # 绑定鼠标点击事件到图形


fig.canvas.mpl_connect('button_press_event', onclick)

# 显示图表
plt.show()

  🎉以上代码创造了一个超酷的交互式饼图!🎨 每个扇区在轻轻一点之间就能变成亮黄色,再次点击又能优雅地恢复原状。🔄 这是怎么实现的呢?原来,代码早已悄悄保存了每个扇区的原始颜色,并在你点击时智慧地检查当前颜色,然后迅速作出切换。✨ 通过巧妙运用Matplotlib库的强大功能和事件处理机制,以上代码可以带来不错的交互体验!💥

🎉 效果展示
【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】,Matplotlib之旅:零基础精通数据可视化,matplotlib,信息可视化,python,数据可视化

Fig.3 使用`plt.pie()`制作可动态变化的饼图

📚 四、参考文档

  1. Matplotlib官网
  2. Matplotlib初探:认识数据可视化与Matplotlib
  3. 数据分析利器对决:Matplotlib中的MATLAB风格与面向对象风格,你选谁?
  4. Matplotlib plt.colorbar:从入门到精通,只需一篇文章!

🌳 五、结尾

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!文章来源地址https://www.toymoban.com/news/detail-828127.html

到了这里,关于【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月11日
    浏览(21)
  • Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

    Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

    本文主要介绍如何使用Vue3和TypeScript引入BabylonJs技术实现3D效果。结合实际案例,详细讲解了如何在Vue3项目中引入BabylonJs,并了解其相关知识。通过本文的学习,相信读者可以轻松掌握Vue3实现3D效果以及BabylonJs的相关知识。 1、创建Vue3 + TypeScript项目 将生成的js文件都修改为

    2024年02月04日
    浏览(12)
  • Vue3 + TypeScript + Uniapp 开发小程序【医疗小程序完整案例·一篇文章精通系列】

    Vue3 + TypeScript + Uniapp 开发小程序【医疗小程序完整案例·一篇文章精通系列】

    当今的移动应用市场已经成为了一个日趋竞争激烈的领域,而开发一个既能在多个平台上运行,又能够高效、可维护的应用则成为了一个急需解决的问题。 在这个领域中,Vue3 + TypeScript + Uniapp 的组合已经成为了一种受欢迎的选择,特别是在开发小程序方面。Vue3 作为一个现代

    2024年02月09日
    浏览(10)
  • Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】

    Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】

    这是一个使用Vue3,TypeScript,Vite和Three.js的项目。Vue3是一个流行的JavaScript框架,用于构建用户界面。TypeScript是一种静态类型的编程语言,它是JavaScript的超集,可以编译成纯JavaScript。Vite是一个由Evan You开发的新的前端构建工具,能够提供快速的冷启动和即时热更新。 Three.j

    2024年02月03日
    浏览(10)
  • 一篇文章完成Hbase入门

    一篇文章完成Hbase入门

    HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 1、数据模型结构 逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map(多维地图) HBase逻辑结构 2、物理存

    2024年01月16日
    浏览(12)
  • “!!!保姆级教程·Python·从0开始到精通基础!!!“ “一篇文章全部学完!“ 详细过程 各种注意批注 为您的python基础学习保驾护航!

    “!!!保姆级教程·Python·从0开始到精通基础!!!“ “一篇文章全部学完!“ 详细过程 各种注意批注 为您的python基础学习保驾护航!

    目录  常量和表达式 变量和类型  变量是什么 变量的语法 定义变量 变量命名的规则 使用变量   变量的类型 整数  浮点数 字符串 布尔类型 其它 为什么要有这些类型? 动态类型特征 两面性 注释 注释是什么     作用          注释的语法 注释的规范 输入输出   和用户

    2024年02月21日
    浏览(18)
  • 一篇文章带你入门HBase

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 目录 HBase特性 Hadoop的限制 基本概念 NameSpace Table RowKey Column TimeStamp Cell 存储结构 HBase 数据访问形式 架构体系 HBase组件 HBase读写流程 读流程 写流程 MemStore Flush 参数说明 StoreFile Compaction 参数说明 触发过程

    2024年02月08日
    浏览(16)
  • RabbitMQ入门到实战一篇文章就够了

    RabbitMQ入门到实战一篇文章就够了

    课程内容 认识RabbitMQ 安装RabbitMQ SpringBoot使用RabbitMQ 其他特性 1.RabbitMQ认识 1.1.RabbitMQ是什么 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程

    2024年03月09日
    浏览(13)
  • Google SEO入门教程,入门看这篇文章就行了

    Google SEO入门教程,入门看这篇文章就行了

    页面 SEO 基础知识 页面搜索引擎优化确保 Google 可以找到您的网页,以便他们可以在搜索结果中显示它们。它还涉及为您尝试显示的搜索词组提供相关、详细和有用的内容。 具体来说,Google 会扫描您的网页以查找特定的字词和短语。 当它一遍又一遍地看到同一个词时,谷歌

    2023年04月09日
    浏览(11)
  • FPGA入门有多难?这篇文章让你吃透零基础入门技巧!

    FPGA入门有多难?这篇文章让你吃透零基础入门技巧!

    FPGA是一个高度集成化的芯片,其学习过程既需要编程,又需要弄懂硬件电路和计算机架构。涉及到的知识和基础非常多, 如果不合理地安排学习内容,学习过程会非常漫长和枯燥 。这使很多想要学习FPGA小伙伴望而却步,那么,**FPGA到底有多难入门?**今天移知教育小编就带

    2024年02月04日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包