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

相关推荐

  • SQL优化很难怎么办?给你一个简单暴力的办法

    SQL优化很难怎么办?给你一个简单暴力的办法今天给大家带来一个比较简单SQL优化案例,来分析一下开发人员经常感到不解一个问题——视图合并导致的SQL变慢 例如: 一个运维人员(这里的运维指的是,在现有的系统上,进行稍微修改) 因为业务上的改变…

    2022-12-21
    143
  • 巨杉Tech | SequoiaDB数据域及存储规划

    巨杉Tech | SequoiaDB数据域及存储规划1 背景 近年来,企业的各项业务发展迅猛,客户数目不断增加,后台服务系统压力也越来越大,系统的各项硬件资源也变得非常紧张。因此,在技术风险可控的基础上,希望引入大数据技术,利用大数据技术优化现有IT…

    2022-12-15
    147
  • ETC 读卡出错_etc未检测到标签

    ETC 读卡出错_etc未检测到标签摘要:本文通过对ETCD服务异常问题分析,代码展示解决方案。 本文分享自华为云社区《【实例状态】GaussDB ETCD服务异常》,作者:酷哥。 首先确认是否是虚拟机、网络故障 虚拟机故障导致ETCD

    2023-06-13
    159
  • 如何搭建文件分享服务器_如何搭建个人网络存储服务器

    如何搭建文件分享服务器_如何搭建个人网络存储服务器是否经常觉得通过QQ传送大量文件十分麻烦?是否对运行IIS或者FTP服务器共享文件感到不知所措?是否因局域网无法与外网共享文件感到头痛?虽然FTP服务器软件已经有非常简单的简化版程序,然而还是由不少…

    2023-04-12
    153
  • mysql使用存储过程批量给表加字段[亲测有效]

    mysql使用存储过程批量给表加字段[亲测有效]背景:项目中,需要给几百张表添加相同的字段,手动添加比较费劲,于是打算使用存储过程实现。 编写的存储过程: delimiter // — 创建存储过程之前需判断该存储过程是否已存在,若存在则删除 D

    2023-05-11
    144
  • mongodb聚合查询_mongodb 聚合

    mongodb聚合查询_mongodb 聚合在实际使用时,必不可少地需要将多个文档甚至是多个集合汇总到一起计算、分析,MongoDB 提供了原生聚合框架支持这样的计算、分析。

    2023-06-16
    156
  • excel函数怎么提取字符串_15个常用excel函数公式

    excel函数怎么提取字符串_15个常用excel函数公式如果忽略则为1主要功能:从一个文本字符串的第一个字符开始返回指定个数的字符2.右边提取在C4单元格输入公式。

    2023-03-01
    144
  • Python编程,无所不能

    Python编程,无所不能Python是一种面向对象、解释型的高级编程语言,由Guido van Rossum于1989年底在荷兰创造。它具有简单明了、易读易学、代码量少、可移植性强等特点,并且可以用于各种编程领域。

    2024-04-29
    68

发表回复

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