请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3364712 新帖:0

matplotlib 数据可视化 - 饼状图

专门亏损发表于:5 月 10 日 00:37回复(1)

线性图、条形图、饼状图是最基本的类型,需要好好品味,希望自已得以提升,也希望各位极客们也能有所收获O(∩_∩)O~~

import matplotlib.pyplot as plt 
import numpy as np

饼状图¶

使用pie()函数来制作饼状图。先来看一个简单的例子。

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()

哦,上图竟然是扁的!O__O "…,没关系,一步一步来。¶

先来解析一下饼图的绘制方法吧!

plt.pie(values,labels=labels,colors=colors)

pile()函数接收一个数据集合,将期求和后再对各元素分配比例,再接收一个列表,存放各元素对应的类别,最后一个元素则可以指定各元素的颜色表现。

指定图表的大小¶

接下来,将上图的扁的饼图调成一个标准的圆O(∩_∩)O~~

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]

'''在绘制饼图之前,指定图表的大小,令其长宽一致'''
plt.figure(figsize=(6,6))

colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()

上面是一种改善图表的方法,另一种方法是使用axis()函数

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)

'''equal表示平等、平衡的意思,即将x/y轴宽度调整为一致,与上例道理上是一样的'''
plt.axis('equal')

plt.show()

突出显示某一块扇形¶

explode属性可以指定对应元素脱离饼图的大小,取值范围0~1,值越大,脱离程度越大。

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']

explode = [0.3,0,0,0]
plt.pie(values,labels=labels,colors=colors,explode=explode)

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

让饼状图放置一定的角度¶

startangle属性可以指定饼图放置的角度,取值为0~360。

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]

'''顺便加个标题'''
plt.title('饼状图')
plt.pie(values,labels=labels,colors=colors,explode=explode,startangle=180)

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

显示各元素所占的百分比¶

autopct可以在第一块的中间位置添加文本标签来显示百分比。

shadow=True可以为图表添加阴影效果。

labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
plt.title('饼状图')

plt.pie(values,
        labels=labels,
        colors=colors,
        explode=explode,
        shadow=True,  # 阴影
        autopct='%1.1f%%',  # 添加百分比,浮点数,保留一位
        startangle=180)

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

为 DataFrame 绘制饼图¶

import pandas as pd

data = {'one':[1,3,4,5,5],
        'two':[2,4,5,2,7],
        'three':[3,2,4,8,9]}
df = pd.DataFrame(data)
df['one'].plot(kind='pie',figsize=(6,6))  # 指定图表类型和大小
plt.show()
 

全部回复

0/140

量化课程

    移动端课程