Matplotlib,风格类似 Matlab 的基于 Python 的图表绘图系统。 Matplotlib 是 Python 最著名的绘图库,它提供了一整套和 Matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中。本文主要介绍Python Matplotlib pie 饼图。

1、绘制饼图

使用Pyplot,您可以使用pie()函数绘制饼图:

例如: 

一个简单的饼图:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show()

Result:

httpswwwcjavapycom

如您所见,饼图为数组中的每个值绘制了一个块(称为楔形)(在本例中为[35,25,25,15])。

默认情况下,第一个楔形的绘制从x轴开始,并逆时针移动:

httpswwwcjavapycom

注意:每个楔形的大小是通过使用以下公式将值与所有其他值进行比较来确定的:该值除以所有值的和:x / sum(x)

2、标签(label)

使用label参数将标签添加到饼图中。

label参数必须是一个数组,每个楔形都有一个标签:

例如: 

一个简单的饼图:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, lables = mylabels)
plt.show()

Result:

httpswwwcjavapycom

3、起始角度(startangle)

如前所述,默认起始角度在x轴上,但是您可以通过指定startangle参数来更改起始角度。

startangle参数用角度(以度为单位)定义,默认角度为0:

httpswwwcjavapycom

例如:

以90度开始第一个楔形:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, lables = mylabels, startangle = 90)
plt.show()

 Result:

httpswwwcjavapycom

4、explode

也许您希望其中一个楔块突出?的 explode参数允许您执行此操作。

如果指定了explode参数,并且不是None,则它必须是一个数组,每个楔形都有一个值。

每个值代表每个楔形物离中心的距离:

例如:

从饼的中心拉出“Apples”楔子0.2:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
myexplode = [0.2, 0, 0, 0]

plt.pie(y, lables = mylabels, explode = myexplode)
plt.show()

 Result:

httpswwwcjavapycom

5、设置阴影

通过设置阴影向饼图添加阴影 将shadows参数设置为True

例如:

添加阴影:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
myexplode = [0.2, 0, 0, 0]

plt.pie(y, lables = mylabels, explode = myexplode, shadow = True)
plt.show()

 Result:

httpswwwcjavapycom

6、颜色

可以使用colors参数设置每个楔形的颜色。

如果指定了colors参数,则它必须是一个数组,每个楔形都有一个值:

例如:

为每个楔形指定新的颜色:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
mycolors = ["black", "hotpink", "b", "#4CAF50"]

plt.pie(y, labels = mylabels, colors = mycolors)
plt.show()

 Result:

httpswwwcjavapycom

可以使用十六进制颜色值,140种受支持的颜色名称中的任何一种或以下快捷方式之一:

'r'-红色
'g'-绿色
'b'-蓝色
'c'-青色
'm'-洋红色
'y'-黄色
'k'-黑色
'w'-白色

7、图例

要为每个楔形添加解释列表,请使用legend()函数:

例如: 

添加图例:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, labels = mylabels)
plt.legend()
plt.show()

Result:

httpswwwcjavapycom

带标题的图例

要将标题添加到图例,请将title参数添加到legend函数。

例如: 

添加带有标题的图例:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, labels = mylabels)
plt.legend(title = "Four Fruits:")
plt.show()

Result:

httpswwwcjavapycom