Python数据可视化01:饼图(扇形统计图)

底下有投票!!!

01_认识饼图

饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。2D饼图为圆形,手画时,常用圆规作图。
仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比。

02_Matplotlib Pyplot

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。
使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt

import matplotlib.pyplot as plt

这样我们就可以使用 plt 来引用 Pyplot 包的方法。

03_Pie()

我们可以使用 pyplot 中的 pie() 方法来绘制饼图。
pie() 方法语法格式如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=
None, autopct=None, pctdistance=0.6, shadow=False, 
labeldistance=1.1, startangle=0, radius=1, counterclock=True, 
wedgeprops=None, textprops=None, center=0, 0, frame=False,  
rotatelabels=False, *, normalize=None, data=None)[source]

参数说明:

  • x:浮点型数组,表示每个扇形的面积。
  • explode:数组,表示各个扇形之间的间隔,默认值为0。
  • labels:列表,各个扇形的标签,默认值为 None。
  • colors:数组,表示各个扇形的颜色,默认值为 None。
  • autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
  • labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
  • pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
  • shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
  • radius::设置饼图的半径,默认为 1。
  • startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
  • counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。
  • wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5。
  • textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。
  • center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。
  • frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。
  • rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。
  • 下面我们用pie()函数来创建一个简单的饼图:

    import matplotlib.pyplot as plt  # 导入库
    data = [50, 100, 150, 200]       # 数据准备
    plt.pie(data) 					 # 绘制饼图
    plt.show()						 # 显示饼图
    

    运行后就是这个毛样:

    04_饼图进阶

    设置饼图各个扇形的标签与颜色:

    import matplotlib.pyplot as plt
    data = [50, 100, 150, 200]
    label = ['重', '色', '轻', '友'] 
    plt.pie(data, labels=label)
    plt.show()
    

    显示:

    搞错了重来(问题出在中文字体加载):

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = 'simhei'
    '''
    WIN系统填上面这一行,
    MAC系统填plt.rcParams['font.sans-serif'] = 'Arial Unicode MS'
    '''
    data = [50, 100, 150, 200]
    label = ['重', '色', '轻', '友'] 
    plt.pie(data, labels = label)
    plt.show()
    

    这个样子:

    怎么样,有内味了吧。
    不要停!
    加上百分数:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = 'simhei'
    data = [50, 100, 150, 200]
    label = ['重', '色', '轻', '友'] 
    plt.pie(data, labels = label, autopct='%.2f%%')
    plt.show()
    


    加上标题:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = 'simhei'
    data = [50, 100, 150, 200]
    label = ['重', '色', '轻', '友'] 
    plt.pie(data, labels = label, autopct='%.2f%%')
    plt.title('重、色、轻、友占比情况')
    plt.show()
    


    设置半径:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = 'simhei'
    data = [50, 100, 150, 200]
    label = ['重', '色', '轻', '友'] 
    plt.pie(data, labels = label, autopct='%.2f%%', radius=20)
    plt.title('重、色、轻、友占比情况')
    plt.show()
    


    额,缩小缩小:

    就这样!
    好了,这期就结束了,期待下期内容!

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python数据可视化01:饼图(扇形统计图)

    发表评论