饼图是数据可视化的常用方式之一,它能够直观地呈现出数据之间的比例关系。在Python中,使用matplotlib库中的pyplot模块可以轻松地画出饼图。
一、基本饼图
使用matplotlib.pyplot.pie()函数可以简单地画出基本的饼图。该函数有两个必传参数:sizes和labels,分别代表比例和标签。请看下面的代码:
import matplotlib.pyplot as plt sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] plt.pie(sizes, labels=labels) plt.show()
上述代码会生成一个基本的饼图,其中比例从sizes中取得,标签从labels中取得。plt.show()函数用于显示图像,如果省略该函数,则图像无法显示。
二、设置颜色和字体
默认情况下,matplotlib会为每一块自动生成颜色。如果需要自定义颜色,可以使用colors参数。colors参数应该是一个长度等于sizes长度的元组,其中每个元素代表一种颜色。请看下面的代码:
import matplotlib.pyplot as plt sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] colors = ('red', 'blue', 'green', 'yellow') plt.pie(sizes, labels=labels, colors=colors) plt.show()
上述代码中,自定义了四个颜色,分别对应四个标签。也可以使用列表生成式生成自己的颜色列表。比如下面生成一个颜色渐变的列表:
import matplotlib.pyplot as plt from matplotlib import cm # 导入渐变色模块 sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] colors = [cm.Spectral(x) for x in np.linspace(0, 1, len(sizes))] # 生成颜色渐变列表 plt.pie(sizes, labels=labels, colors=colors) plt.show()
该方法使用了matplotlib中的colormap模块,通过np.linspace()函数生成一组等差数列,再传入原始颜色中,就可以生成一个颜色渐变的饼图。
此外,可以使用字体库改变文本的字体和大小。请看下面的代码:
import matplotlib.pyplot as plt from matplotlib import font_manager as fm # 导入字体模块 sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] prop = fm.FontProperties(fname="font.ttf", size=14) # 定义字体样式对象 plt.pie(sizes, labels=labels, textprops={'fontproperties':prop}) plt.show()
上述代码中,创建了一个字体样式对象prop,并将其设置为textprops参数的值,从而改变了饼图中文本的字体和大小。其中,fname参数指定了字体文件路径,size参数指定了字体大小。
三、强调特定部分
强调饼图中的某一部分可以使用explode参数。该参数应该是一个长度等于sizes长度的元组,其中每个元素代表相应饼块的偏移量。请看下面的代码:
import matplotlib.pyplot as plt sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] explode = (0, 0.1, 0, 0) # 强调B plt.pie(sizes, labels=labels, explode=explode) plt.show()
上述代码中,通过设置explode参数,将饼图中B部分的偏移量设置为0.1,即向外凸出。
四、整体调整
在饼图中,有许多其他的调整参数,比如刻度线、比例字体等。可以通过plt.axis()函数对图像进行整体调整。
import matplotlib.pyplot as plt sizes = [30, 40, 20, 10] labels = ['A', 'B', 'C', 'D'] explode = (0, 0.1, 0, 0) plt.pie(sizes, labels=labels, explode=explode) # 隐藏刻度线 plt.axis('equal') # 修改比例字体 plt.rcParams['font.family'] = 'SimHei' plt.rcParams['font.size'] = '12' plt.show()
上述代码中,使用plt.axis(‘equal’)函数隐藏了刻度线;使用plt.rcParams函数改变了字体样式和大小。
五、总结
本文介绍了Python中如何使用matplotlib.pyplot模块画饼图,包括基本饼图、自定义颜色和字体、强调特定部分、整体调整等多方面。可以根据实际需要进行调整,使生成的图像更加符合要求。
原创文章,作者:HBEJZ,如若转载,请注明出处:https://www.506064.com/n/373320.html