Python数据分析课

您所在的位置:网站首页 如何绘制扇形图纸图片 Python数据分析课

Python数据分析课

#Python数据分析课| 来源: 网络整理| 查看: 265

扇形图介绍

扇形图,用整个圆表示总数,用圆内各个扇形的大小表示各部分数量占总数的百分数。

扇形图绘制

扇形图通过pie()函数绘制 • plt.pie(x, explode=None, labels=None) • x 扇形数据 • explode 设置某几个分块是否要分离饼图 • labels 每块扇形标签 • autopct 百分比数据标签 • shadow 是否显示阴影 • plt.pie()有3个返回值 • patches 绘制饼图每一块的对象 • texts 文本的列表 • autotexts 百分比的文本列表

练习

将以下frac数据绘制扇形图,并且设置其扇形标签为label frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50] label = [’[3,4]’,’(4,5]’,’(5,6]’,’(6,7]’,’(7,8]’,’(8,9]’,’(9,10]’]

# 将以下frac数据绘制扇形图,并且设置其扇形标签为label # frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50] # label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]'] from matplotlib import pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体) plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题) plt.figure(figsize=(6,6),dpi=300) frac = [1/50,6/50,11/50,15/50,9/50,6/50,2/50] label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]'] #设置要分离的元素 explodes = (0,0,0.1,0,0,0,0) # 获取 元组拆包 patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",explode=explodes) # .2f是要保留两位小数 %转义 shadow=True-效果不好 # print(patches) # [, , , , , , ] # print(texts) # [Text(1.09783,0.0690696,'[3,4]'), Text(0.963937,0.529929,'(4,5]'), Text(2.8088e-08,1.2,'(5,6]'), Text(-1.09783,-0.0690696,'(6,7]'), Text(7.72421e-08,-1.1,'(7,8]'), Text(0.889919,-0.646564,'(8,9]'), Text(1.09133,-0.137866,'(9,10]')] # print(autotexts) # [Text(0.598816,0.0376743,'2.00%'), Text(0.525784,0.289052,'12.00%'), Text(1.63847e-08,0.7,'22.00%'), Text(-0.598816,-0.0376743,'30.00%'), Text(4.2132e-08,-0.6,'18.00%'), Text(0.48541,-0.352671,'12.00%'), Text(0.595269,-0.0751999,'4.00%')] # 设置百分比数值 字体为白色 需要在列表里取出元素 for autotext in autotexts: autotext.set_color('w') plt.show()

在这里插入图片描述

箱型图 箱型图介绍

箱线图是一种直观简洁的方式去呈现一组数据的分布。 箱线图广泛用于各个数据分析领域,它能非常简单明了地显示一组数据中5个重要数值,并且还能发现一组数据中的存在的异常值。 • 最大值 • 最小值 • 中位数 • 下四分位数(Q1) • 上四分位数(Q3) 在这里插入图片描述

# 随机生成1-100个数据 import random from matplotlib import pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体) plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题) data = [random.randint(1,100) for i in range(100)] # print(min(data)) # 添加异常值 -100,500 把列表扩展 data.extend([-100,500]) # append是添加元素,extend是扩展列表 # print(data) # 均值大于中位数的话--->说明整天数据偏大 plt.boxplot(data,sym="^",widths=0.2,meanline=True,showmeans=True) plt.show()

在这里插入图片描述

箱型图绘制

Python当中可以使用Matplotlib当中的boxplot()绘制箱型图,绘制效果如下。 在这里插入图片描述 plt.boxplot() • x:需要绘制的箱型图的数据 • notch:是否展示置信区间 默认为False • sym:代表异常点的符号表示 默认为圆点 • vert:是否是垂直的 默认是True • whis:上下限系数 默认为1.5 • positions:设置每个盒子的位置 • widths:设置每个盒子的宽度 • labels:每个盒子的label • meanline和showmean:都为True的时候 会展示平均线

import numpy as np import pandas as pd from matplotlib import pyplot as plt data = np.random.randint(1,100,size=100) data = np.append(data,np.array([-100,300])) # 添加两个异常值 plt.boxplot(data,sym="^",widths=0.2,meanline=True,showmeans=True) plt.show() 雷达图介绍

雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况。比如某个企业在哪些业务方面的投入等,都可以用雷达图方便的表示。

绘制雷达图

在matplotlib.pyplot中,可以通过plt.polar来绘制雷达图,这个方法的参数跟plt.plot非常的类似,只不过是x轴的坐标点应该为弧度(2*PI=360°)。

import numpy as np quaters = ['Q1','Q2','Q3','Q4'] sales = [40,91,44,90,40] theta = np.linspace(0,np.pi*2,5) plt.polar(theta,sales) plt.xticks(theta,quaters,fontproperties=font) plt.fill(theta,sales) from matplotlib import pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体) plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题) quaters = ['Q1','Q2','Q3','Q4'] # 不是x,x是弧度 sales = [40,91,44,90,40] # 最后这个40需要添加,如果不添加,首尾不能链接 #求theta 2*PI theta = np.linspace(0,np.pi*2,5) # 创建等差数列 [0. 1.57079633 3.14159265 4.71238898 6.28318531] # print(theta) # 绘制 plt.polar(theta,sales) # 设置刻度标签 plt.xticks(theta,quaters) plt.fill(theta,sales) plt.show() 报错

ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of ticklabels (4). 然后改了代码就好了

from matplotlib import pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体) plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题) quaters = ['Q1','Q2','Q3','Q4','Q1'] # 不是x,x是弧度 sales = [40,91,44,90,40] # 最后这个40需要添加,如果不添加,首尾不能链接 #求theta 2*PI theta = np.linspace(0,np.pi*2,5) # 创建等差数列 [0. 1.57079633 3.14159265 4.71238898 6.28318531] # print(theta) # 绘制 plt.polar(theta,sales) # 设置刻度标签 plt.xticks(theta,quaters) plt.fill(theta,sales) plt.show()

注意: • 因为polar并不会完成线条的闭合绘制,所以我们在绘制的时候需要在theta中和values中在最后多重复添加第0个位置的值,然后在绘制的时候就可以和第1个点进行闭合了。 • polar只是绘制线条,所以如果想要把里面进行颜色填充,那么需要调用fill函数来实现。 • polar默认的圆圈的坐标是角度,如果我们想要改成文字显示,那么可以通过xticks来设置。 绘图参考链接: https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot •



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3