如何使用 matplotlib 在圆环饼图中制作子图?

2024-02-03

如何使用Python的matplotlib为圆环饼图制作子图?

下面是我写的代码:

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs'
sizes = [15, 30, 45]
colors = ['yellowgreen', 'gold', 'lightskyblue']
explode = (0, 0, 0)  # explode a slice if required
subgroup_names = ['A.1', 'A.2', 'A.3', 'B.1', 'B.2', 'C.1']
subgroup_size = [13, 3, 5, 6, 5, 10]
a, b, c = [plt.cm.Blues, plt.cm.Reds, plt.cm.Greens]

plt.pie(sizes, explode=explode, labels=labels, pctdistance=0.45, labeldistance=0.65, colors=colors, autopct='%.2f%%', shadow=True)
centre_circle = plt.Circle((0, 0), 0.175, color='black', fc='white', linewidth=1.25)

plt.pie(subgroup_size, labels=subgroup_names, pctdistance=0.85, labeldistance=1.25, colors=[a(0.5), a(0.4), a(0.3), b(0.5), b(0.4), c(0.6)], autopct='%.2f%%', shadow=True)
centre_circle2 = plt.Circle((0, 0), 0.275, color='red', fc='white', linewidth=1.25)

fig = plt.gcf()
fig.gca().add_artist(centre_circle)
fig.gca().add_artist(centre_circle2)


plt.axis('equal')
plt.show()

结果如下图所示:

但我希望结果与下图类似:

(我必须显示百分比值)


Matplotlib 文档提供了非常好的示例,几乎涵盖了您能想到的所有内容。请参见here https://matplotlib.org/gallery/pie_and_polar_charts/nested_pie.html#sphx-glr-gallery-pie-and-polar-charts-nested-pie-py对于嵌套饼图。

在对仅链接答案的评论之后,关键字 radius 就是您在调用 pie() 时要查找的内容。它接受一个浮点数,决定饼图的绝对半径。因此,绘制嵌套饼图需要多次调用pie(),每个调用具有不同的半径值。请看下面的例子

import matplotlib.pyplot as plt
plt.pie([1, 2, 3], radius=1,
        colors=['xkcd:cerulean', 'xkcd:bright red', 'xkcd:grass green'],
        labels=['Group A', 'Group B', 'Group C'], autopct='%.2f%%',
        pctdistance=0.85, shadow=True,
        wedgeprops=dict(width=0.3, edgecolor='white'))

plt.pie([0.3, 0.7, 0.4, 1.5, 0.1, 3], radius=0.7,
        colors=['xkcd:sky blue', 'xkcd:light blue', 'xkcd:reddish pink',
                'xkcd:salmon pink', 'xkcd:baby pink', 'xkcd:apple green'],
        wedgeprops=dict(width=0.3, edgecolor='white'),
        labels=['A.1', 'A.2', 'B.1', 'B.2', 'B.3', 'C.1'], autopct='%.2f%%',
        pctdistance=0.8, labeldistance=0.4, shadow=True)
plt.axis('equal')
plt.show()

which returns the following plot enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 matplotlib 在圆环饼图中制作子图? 的相关文章

随机推荐

  • unicode 输出 java windows cmd

    我是java新手 所以请原谅我 如果这是常见的知识 但我已经努力搜索 但找不到任何有用的 相关的或可理解的东西 考虑到我是一个C开发人员 这很奇怪 我的问题是 如何让java在Windows shell中打印Unicode字符串 为简单起见
  • 处理 Tornado 中未定义的模板变量

    这是一个龙卷风模板 例如 在文件 logout html 中 我在注销过程中出现错误时呈现 if logout error Oops The logout failed Please close all open documents and
  • android 点击劫持,如何防止它

    试图避免我的观点涉及从覆盖层接收反馈 以下是某人在 Android 上进行的黑客攻击示例 允许用户无意中按下系统按钮属性 甚至输入凭据来执行与最初意图完全不同的操作 http www youtube com watch v gCLU7YUX
  • 在Python中获取文件关联

    我想要在 Linux 和 Windows 中获取与扩展关联的程序 我知道我可以在 Linux 中执行 xdg open 或在 Windows 中启动 但我要在远程服务器上打开媒体文件 因此使用此方法将打开网络浏览器 而不是默认媒体播放器 如
  • 运行 R 脚本 - Ubuntu 服务器

    我最近在 Ubuntu Server 16 04 上编译了 R 我尝试使用 Rscript 函数运行 R 脚本 但遇到错误 当我使用运行脚本时Rscript 输出显示功能as and new 无法找到 R 发行版中包含的方法包中的内容 当我
  • HTML5 必需属性不起作用

    我想创建一个电子邮件联系表单而不刷新页面 所以我在我的 html 文件中添加了 jquery 我使用 html required 属性检查字段是否为空 但是当我在我的 html 代码中添加 jquery 代码时 required 属性不起作
  • 使用未指定的索引。考虑添加 ".indexOn": "g"

    我正在使用 Geofire 在某个区域进行循环查询 设置好观察者后 我会返回位置 但是 随着位置的变化 我还会返回 使用未指定的索引 考虑添加 indexOn g 我的 geofire 数据库看起来像这样 karmadots geofire
  • 将正方形分割成小正方形

    我有一个大广场 我想把这个正方形分成小正方形 我需要所有可能的组合 我知道组合有无数种 但我有一个限制 我有最小正方形的固定尺寸 我可以使用蛮力来实现它 但它太长了 对于这个任务有更好的算法吗 Thanks 那么这个问题只有当我们做出两个假
  • 尝试理解 Ruby 中 self.method_name 与 Classname.method_name 的使用

    我试图了解何时使用 self method name 与何时使用 Classname method name 在下面的示例中 为什么 before create 需要引用 User hash password 而不是 self hash p
  • Apache:如何对用户隐藏服务器版本和操作系统?

    我在一个网站上读到我需要添加两行httpd conf file 服务器签名关闭 ServerTokens 产品 但当我添加它们后 一切都没有改变 正如之前我可以在浏览器中看到的 Apache 2 2 16 Debian 也许这很重要 当我打
  • 默认的 VB6 字符集是什么?

    我们有一个用 Java 编写的应用程序 它读取 VB6 应用程序生成的一些文本 问题是 这个 VB6 应用程序使用一些特殊字符生成此输出 例如 我们不知道这些字符采用什么字符集 那么问题来了 VB6有没有使用默认的字符集 是哪一个 如何将数
  • 如何通过新的 V2 API 使用 Google Translate TTS?

    我曾经使用以下网址调用 Google Translate TTS 下载音频文件 然而谷歌改变了工作方式 因此我无法再下载音频文件 我已注册 Google Translate API V2 免费试用版 但找不到如何获取 TTS 音频文件 任何
  • Android 4.0.3 (MIUI ROM) 下未加载本机库

    一位客户联系我 当他将 Android ROM 更新到相当于 Android 4 0 3 的 MIUI 时 我的 Android 应用程序崩溃了 LogCat 中的相关行是 04 09 10 37 09 326 17789 17789 E
  • 在 OS X Lion 10.7.4 和 Python 3.2.2 上安装 MatPlotLib 1.2.x

    几天前我问了一个关于在同一系统上安装 numpy 的问题 值得庆幸的是 我自己设法解决了这个问题 但不幸的是我现在陷入了尝试安装 matplotlib 的困境 我首先尝试了当前的分布式版本 但没有成功 所以我想我应该下载 git 存储库并尝
  • 函数模板重载解析和编译器优化

    我正在看这里发现的这个问题包含类型的类型的模板函数重载 https stackoverflow com questions 44511121 template function overload for type containing a
  • 将数据存储为 flutter 中共享首选项中的对象

    我想在共享首选项中存储一个对象 其中包含一些字段 如姓名 年龄 电话号码等 我不知道如何在颤振中的共享首选项中存储对象 您可以将对象存储在共享首选项中 如下所示 SharedPreferences shared User await Sha
  • 使用 EDITBIN 时的错误代码 -1073741515

    我正在使用 EditBin 来增加我正在编写的应用程序的堆栈大小 我在 Visual Studio 的构建后事件命令行中包含以下内容 C Program Files x86 Microsoft Visual Studio 10 0 VC b
  • 如何使我的网站符合 PCI 标准

    假设我决定使用支付网关而不是使用他们的托管页面 而是提供我自己的信用卡详细信息表单 然后通过 xml 将数据发送到他们的后端 如下所示本页有解释 http www eway com au Developer eway api hosted
  • Java内存模型:编译器重新排列代码行

    众所周知 Java 语言允许编译器重新排列已编译代码行 只要重新排序对代码语义没有影响即可 然而 编译器只需关心语义 如从当前线程 如果这种重新排序影响多线程情况下的语义 通常会导致并发问题 内存可见性 我的问题 通过允许编译器使用这个 f
  • 如何使用 matplotlib 在圆环饼图中制作子图?

    如何使用Python的matplotlib为圆环饼图制作子图 下面是我写的代码 import matplotlib pyplot as plt labels Frogs Hogs Dogs sizes 15 30 45 colors yel