Python饼状图分析

Python饼状图分析Python是一种高级编程语言,广泛用于数据分析和数据可视化。在数据可视化方面,Python提供了许多库和工具,其中之一是用于绘制饼状图的库。饼状图可以用于显示不同类别之间的关系,以及每个类别所占总量的百分比。在以下内容中,我们将介绍如何使用Python绘制饼状图,以及如何使图表更加可视化和有吸引力。

Python是一种高级编程语言,广泛用于数据分析和数据可视化。在数据可视化方面,Python提供了许多库和工具,其中之一是用于绘制饼状图的库。饼状图可以用于显示不同类别之间的关系,以及每个类别所占总量的百分比。在以下内容中,我们将介绍如何使用Python绘制饼状图,以及如何使图表更加可视化和有吸引力。

一、引入和导入数据

在绘制饼状图之前,需要将数据导入Python的环境中。在此示例中,我们将使用Pandas变量从CSV文件中读取数据。

import pandas as pd # 从csv文件中导入数据 data = pd.read_csv('piechart_data.csv')

数据的结构应为具有标签和数值列的表格。对于此示例,我们将创建一个包含不同市场份额的公司名称和百分比的数据框。以下是数据框的示例:

 Company Share 0 Company A 28.3 1 Company B 21.5 2 Company C 20.3 3 Company D 14.7 4 Company E 8.9 5 Other Small 6.3

二、绘制一个简单的饼状图

在导入了数据并确保数据适合绘制饼状图后,可以开始绘制饼状图。在此示例中,我们将使用Matplotlib库中的pyplot函数来创建和配置图表,以及进行一些基本的格式化操作。

首先,我们需要导入matplotlib库。

import matplotlib.pyplot as plt

接下来,我们创建一个基本的饼状图。该图表将显示每个公司所占的市场份额,以及每个公司的名称。

# 创建图像并设置大小 plt.figure(figsize=(8,8)) # 创建一个饼状图 plt.pie(data['Share'], labels=data['Company']) # 显示图形 plt.show()

该代码将生成以下的饼状图:

在上面的代码中,plt.figure()语句创建了一个新的图像,并指定了其大小。接下来,plt.pie()语句创建了一个饼状图。在此语句中,我们将公司份额指定为数据框中的“Share”列,labels参数指定数据框中的“Company”列用作标签。

在饼状图被创建之后,使用plt.show()我们进行展示。

三、让饼状图更具视觉吸引力

1. 格式化标准的饼状图

为了使饼图更具视觉吸引力,可以对其进行更多的格式设置。

首先,我们将添加一些文本和图例。使用plt.title()可以添加图表的标题。

plt.title('Market Share by Company') # 添加标题

可以使用plt.legend()添加图例。默认情况下,Matplotlib将将数据中的每个类别显示为饼状图的颜色和图例。但是,您可以使用该labels参数创建自定义标签。

plt.legend(data['Company'], loc='best') # 添加图例

将图例定位到程序最佳位置需要使用loc参数。

接下来,我们要为该图表添加颜色映射和指定颜色模式。可以通过使用plt.pie()的colors功能来完成此操作。

colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99','#ffb3e6','#c2c2f0'] plt.pie(data['Share'], autopct='%1.1f%%', startangle=90, colors=colors, wedgeprops={'edgecolor':'black'})

其输出可视化如下:

2.自定义饼状图

有很多方法可以自定义饼状图。以下是一些简单的更新。首先,我们将更改饼图的样式,使其看起来像甜甜圈而不是标准的饼状图。这可以通过添加一个环来完成,该环与饼状图外部的边框相对应。可以通过添加一个空心圆来创建该环,并设置其大小和颜色。

circle = plt.Circle(xy=(0,0), radius=0.7, color='white') plt.gca().add_artist(circle)

接下来,我们将添加注释。可以使用plt.annotate()在图表中添加注释,以便更好地说明其内容。

plt.annotate('Market Share by Company', xy=(0, 0), color='black', fontsize=15, ha='center') plt.annotate('Total 100%', xy=(0, -0.2), color='black', fontsize=10, ha='center')

将每个公司的百分比文本添加到相应的图块上,可以单击细分以高亮显示特定图块:

bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72) # 添加每个类别的百分比文本 wedges, texts, autotexts = plt.pie(data['Share'], autopct='%1.1f%%',startangle=90, colors=colors,wedgeprops={'edgecolor': 'black'}, textprops=dict(color="black")) plt.setp(autotexts, size=10, weight="bold") for i, p in enumerate(wedges): ang = (p.theta2 - p.theta1)/2. + p.theta1 y = (np.sin(np.deg2rad(ang))) x = (np.cos(np.deg2rad(ang))) horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))] connectionstyle = "angle,angleA=0,angleB={}".format(ang) ax.annotate(data['Company'][i], xy=(x, y), xytext=(1.35*np.sign(x), 1.4*y), horizontalalignment=horizontalalignment, fontweight='bold', textcoords="offset points", ha=horizontalalignment, va='center', bbox=bbox_props, arrowprops=dict(arrowstyle='-', connectionstyle=connectionstyle), fontsize=10)

完整代码如下:

import pandas as pd import matplotlib.pyplot as plt import numpy as np # 从csv文件中导入数据 data = pd.read_csv('piechart_data.csv') # 创建图像并设置大小 plt.figure(figsize=(8,8)) # 创建一个饼状图 colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99','#ffb3e6','#c2c2f0'] circle = plt.Circle(xy=(0,0), radius=0.7, color='white') plt.gca().add_artist(circle) # 添加每个类别的百分比文本 bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72) wedges, texts, autotexts = plt.pie(data['Share'], autopct='%1.1f%%', startangle=90, colors=colors, wedgeprops={'edgecolor': 'black'}, textprops=dict(color="black")) plt.setp(autotexts, size=10, weight="bold") for i, p in enumerate(wedges): ang = (p.theta2 - p.theta1)/2. + p.theta1 y = (np.sin(np.deg2rad(ang))) x = (np.cos(np.deg2rad(ang))) horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))] connectionstyle = "angle,angleA=0,angleB={}".format(ang) ax.annotate(data['Company'][i], xy=(x, y), xytext=(1.35*np.sign(x), 1.4*y), horizontalalignment=horizontalalignment, fontweight='bold', textcoords="offset points", ha=horizontalalignment, va='center', bbox=bbox_props, arrowprops=dict(arrowstyle='-', connectionstyle=connectionstyle), fontsize=10) # 添加标题和图例 plt.title('Market Share by Company') plt.legend(data['Company'], loc='best') # 添加注释 plt.annotate('Market Share by Company', xy=(0, 0), color='black', fontsize=15, ha='center') plt.annotate('Total 100%', xy=(0, -0.2), color='black', fontsize=10, ha='center') # 显示图形 plt.show()

以上就是Python饼状图分析的基础部分以及如何令饼状图更具视觉吸引力的例子。开发人员可以在需要时使用此示例以及适当的数据来构建自己的饼状图。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/20202.html

(0)
上一篇 2024-07-13
下一篇 2024-07-13

相关推荐

  • Python加注释示例

    Python加注释示例Python是一门流行的编程语言,因为它易于学习、具有强大的功能和易于阅读的语法。在实际应用中,为了方便代码的维护、优化和改进,我们需要加入注释。注释是程序员用来解释代码功能、提醒自己或其他开发人员注意事项的文本,它们并不被解释器执行。Python中的注释以井号(#)开头,它可以单独出现一行中,也可以跟在代码后面。

    2024-09-01
    12
  • Redis复制「建议收藏」

    Redis复制「建议收藏」复制:slaveof {masterHost} {masterPort} 注: 任何针对主节点的操作都会同步到从节点 断开复制时从节点数据不会消失且自动升级为主节点,通过上述slaveof命令也可以…

    2023-03-31
    151
  • JavaWeb——JDBC「建议收藏」

    JavaWeb——JDBC「建议收藏」内容索引 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言

    2023-04-15
    150
  • 以js截取最后一个字符串为中心的方法

    以js截取最后一个字符串为中心的方法在web开发中,我们常常需要对字符串进行处理。有时候我们需要获取一个字符串的最后几个字符,甚至想把字符串最后一部分截成两部分处理。这时候,em以js截取最后一个字符串为中心的方法/em就非常有用。

    2024-06-22
    39
  • Python字典的快速值检索方法

    Python字典的快速值检索方法Python字典是一种可变容器,可以存储任意类型的值。每个值都与唯一的键相关联,通过该键可以快速访问该值。Python字典使用哈希表实现,因此,字典中的元素是无序的,但是可以通过键快速访问值。

    2024-02-16
    77
  • mysql DATEDIFF() 函数[亲测有效]

    mysql DATEDIFF() 函数[亲测有效]
    DATEDIFF() 函数返回两个日期之间的时间。 用法:DATEDIFF(datepart,startdate,enddate) startdate 和 …

    2023-04-07
    189
  • linux下使用docker安装oracle11g和mysql5.6[亲测有效]

    linux下使用docker安装oracle11g和mysql5.6[亲测有效]一、拉取oracle11g的镜像 $ docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 下载完成 二、启动容器 $ d…

    2023-02-22
    126
  • 三分钟带你了解一站式大数据平台运维管家ChengYing产品包制作「终于解决」

    三分钟带你了解一站式大数据平台运维管家ChengYing产品包制作「终于解决」课件获取:关注公众号 “数栈研习社”,后台私信 “ChengYing” 获得直播课件 视频回放:点击这里 ChengYing 开源项目地址:github 丨 gitee 喜欢我们的项目给我们点个__

    2023-06-14
    149

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注