python可视化-饼图

饼图是一个将整体划分为几个扇形的圆形统计图表,用于描述数量、频率或百分比之间的相对关系。饼形图适合用来快速展示数据比例分布,但不利于展示较多项目。饼图也因过于关注不同部分彼此或相对于整体的大小关系,导致与其他饼形图作整体比较时不能显示出任何变化而饱受诟病。

1、基于matplotlib的饼图

import matplotlib.pyplot as plt

# 自定义数据
size_of_groups=[12,11,3,30]

# 利用pie函数快速创建
plt.pie(size_of_groups)
plt.show()

2、子图对比

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib_venn import venn3, venn3_circles

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

# 自定义数据
names=['groupA', 'groupB', 'groupC', 'groupD']
values=[12,11,3,30]

# 初始化布局
fig = plt.figure(figsize=(12,8))

# 添加标签
plt.subplot(1, 4, 1) 
plt.pie(values, labels=names, labeldistance=1.15)
plt.title('添加标签')

# 自定义扇形
plt.subplot(1, 4, 2) 
plt.pie(values, labels=names, labeldistance=1.15, wedgeprops = { 'linewidth' : 3, 'edgecolor' : 'white' })
plt.title('自定义扇形')

# 自定义颜色
plt.subplot(1, 4, 3) 
colors = ['#4F6272', '#B7C3F3', '#DD7596', '#8EB897']
plt.pie(values, labels=names, labeldistance=1.15, 
            wedgeprops = { 'linewidth' : 1, 'edgecolor' : 'white' }, colors=colors)
plt.title('自定义颜色')

# 显示百分比
plt.subplot(1, 4, 4) 
plt.pie(values, labels=names, autopct='%1.2f%%')
plt.title('显示百分比')

plt.show()

3、饼图与条形图对比

# 饼图比较
import matplotlib as mpl
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

# 自定义标签
labels = ['a', 'b', 'c', 'd', 'e']

# 初始化布局
fig = plt.figure(figsize=(12,5))

# 饼图1
plt.subplot(1, 3, 1) 
plt.pie([17,18,20,22,24], labels=labels)

# 饼图2
plt.subplot(1, 3, 2) 
plt.pie([20,18,21,20,20], labels=labels)

# 饼图3
plt.subplot(1, 3, 3) 
plt.pie([24,23,21,19,18], labels=labels)

plt.show()

# 条形图比较
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

# 自定义标签
labels = ['a', 'b', 'c', 'd', 'e']

# 初始化布局
fig = plt.figure(figsize=(12,3))

# 条形图1
plt.subplot(1, 3, 1) 
sns.barplot(x=labels, y=[17,18,20,22,24], errorbar=None)

# 条形图2
plt.subplot(1, 3, 2) 
sns.barplot(x=labels, y=[20,18,21,20,20], errorbar=None)

# 条形图3
plt.subplot(1, 3, 3) 
sns.barplot(x=labels, y=[24,23,21,19,18], errorbar=None)


plt.show()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值