Matplotlib 饼状图
创建饼状图
应用 Pyplot,您可以使用 pie() 函数来绘制饼状图:
实例
简单的饼图:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])plt.pie(y)plt.show()#Two lines to make our compiler able to draw:plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

正如您所看到的,饼图为数组中的每个值(在本例中为[35,25,25,15])绘制了一块(称为 wedge)。
默认情况下,第一个 wedge 的打印从 x 轴开始,并 逆时针移动:
注:通过使用以下公式将该值与所有其他值进行比较,确定每个 wedge 的尺寸:
值除以所有值之和:
值除以所有值之和:
x/sum(x)标签
使用 label 参数将标签添加到饼图中。
label 参数必须是一个数组,每个 wedge 有一个标签:
实例
一个简单的饼状图:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]plt.pie(y, labels = mylabels)plt.show()plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

起始角度
如前所述,默认的起始角度位于 x 轴,但您可以通过指定一个 startangle 参数来改变起始角度。
startangle 参数定义为角度,单位为度,默认角度为 0:
实例
以 90 度角开始第一个 wedge:

import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]plt.pie(y, labels = mylabels, startangle = 90)plt.show()#Two lines to make our compiler able to draw:plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

Explode
也许你想要一个突出的 wedge ?explode 参数可用让你达到这个效果。
explode参数(如果指定,而不是 None)必须是一个数组,每个 wedge 有一个值。
每个值表示每个 wedge 显示的离中心的距离:
实例
将 “Apples” 的 wedge 从饼的中心拉出 0.2:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]myexplode = [0.2, 0, 0, 0]plt.pie(y, labels = mylabels, explode = myexplode)plt.show()#Two lines to make our compiler able to draw:plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

阴影
通过设置 shadows 参数为 True 可以为饼图添加阴影效果:
实例
添加阴影:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]myexplode = [0.2, 0, 0, 0]plt.pie(y, labels = mylabels, explode = myexplode, shadow = True)plt.show()plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

颜色
您可以使用 colors 参数设置每个 wedge 的颜色。
如果指定 colors 参数必须是一个数组,每个 wedge 有一个值:
实例
为每个 wedge 指定一个新的颜色:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = 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()plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

你可以使用 十六进制颜色, 或者另外的 140 种支持的颜色名称 , 或者以下简写的其中之一:
r- Redg- Greenb- Bluec- Cyanm- Magentay- Yellowk- Blackw- White
图例
要添加每个 wedge 的说明列表,请使用 legend() 函数:
实例
添加一个图例:
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]plt.pie(y, labels = mylabels)plt.legend()plt.show()plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:

图例添加标题
要在图例添加标题,请将 title 参数添加到 legend 函数中。
实例
在图例添加标题
import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport numpy as npy = np.array([35, 25, 25, 15])mylabels = ["Apples", "Bananas", "Cherries", "Dates"]plt.pie(y, labels = mylabels)plt.legend(title = "Four Fruits:")plt.show()#Two lines to make our compiler able to draw:plt.savefig(sys.stdout.buffer)sys.stdout.flush()
结果:
