Matplotlib 饼状图
创建饼状图
应用 Pyplot,您可以使用 pie()
函数来绘制饼状图:
实例
简单的饼图:
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
y = 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 sys
import matplotlib
matplotlib.use('Agg')
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.show()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
起始角度
如前所述,默认的起始角度位于 x 轴,但您可以通过指定一个 startangle
参数来改变起始角度。
startangle
参数定义为角度,单位为度,默认角度为 0:
实例
以 90 度角开始第一个 wedge:
import sys
import matplotlib
matplotlib.use('Agg')
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, 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 sys
import matplotlib
matplotlib.use('Agg')
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, 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 sys
import matplotlib
matplotlib.use('Agg')
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, labels = mylabels, explode = myexplode, shadow = True)
plt.show()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
颜色
您可以使用 colors
参数设置每个 wedge 的颜色。
如果指定 colors
参数必须是一个数组,每个 wedge 有一个值:
实例
为每个 wedge 指定一个新的颜色:
import sys
import matplotlib
matplotlib.use('Agg')
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()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
你可以使用 十六进制颜色, 或者另外的 140 种支持的颜色名称 , 或者以下简写的其中之一:
r
- Redg
- Greenb
- Bluec
- Cyanm
- Magentay
- Yellowk
- Blackw
- White
图例
要添加每个 wedge 的说明列表,请使用 legend()
函数:
实例
添加一个图例:
import sys
import matplotlib
matplotlib.use('Agg')
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()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
图例添加标题
要在图例添加标题,请将 title
参数添加到 legend
函数中。
实例
在图例添加标题
import sys
import matplotlib
matplotlib.use('Agg')
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()
#Two lines to make our compiler able to draw:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()