熟练掌握matplotlib绘图包,用于数据的可视化分析
1、matplotlib的常见图表组成元素
2、 使用统计函数绘制简单图形
3、 绘制统计图形
4、 完善统计图形
调用方法:plt.bar(x,y,align="center",color="r",tick_label=list[],hatch="/",width=float)
参数说明:(1)x:标示在x轴上的定性数据的类别(可理解为每个柱状条所在的x轴坐标);
(2)y:每种定性数据类别的数量(柱状图的高);
(3)align:对齐方式;
(4)color:柱状条颜色;
(5)tick_label:每个柱状条对应的类别名称;
(6) hatch:柱状条的填充风格;
(7)width:柱状条的宽度;
同理:可应用于条形图(水平柱状图)绘制。
调用方法plt.bar(x,y,align="center",color="r",tick_label=list[],hatch="/"),只需注意x和y的参数调换以下就行
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
# 生成数据
x_list=[1,3,5,7,9,11]
y_list=np.random.randint(1,50,6) # 生成[1-20)之间的6个整数,前闭后开
# 每个柱状条对应的类别名称
bar_label_list=["apple","orange","banana","strawberry","grape","watermelon"]
# 绘制bar柱状图
plt.bar(x_list,y_list,align="center",color="r",tick_label=bar_label_list,hatch="/",width=1.5)
# 绘制图形标题和x、y坐标轴标签
plt.xlabel("水果种类")
plt.ylabel("售卖重量(kg)")
plt.title("单日水果售卖情况")
plt.show()
图例输出如下:
调用方法:plt.hist(x,bins=list[],color="g",edgecolor="b",histtype="bar",rwidth=float,alpha=float)
参数说明:(1)x:在x轴上绘制箱体的定量数据列表;
(2)bins:list对象,意味着统计每个区间宽度内的数目,可参考下面示例理解;
(3)color:直方柱颜色;
(4)edgecolor:直方柱边界线颜色;
(5)histtype:直方状类型;
(6)rwidth:直方柱宽度(一般与区间宽度相等,图形简洁易理解);
(7) alpha:填充的透明度;
作用:不像柱状图,需要事先获取每个类别的数目,直方图会自动统计留在区别内的样本数量,并显示出来。
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
# 生成数据
box_weight_list=np.random.uniform(0,10,100) # [0.0,10.0)之间的100个随机数,作为箱子的重量
# 生成bins列表
bins_list=range(0,11,1) # 意味着统计重量在[0,1)、[1,2)....区别内箱子的数目
# 绘制hist直方图
plt.hist(x=box_weight_list,bins=bins_list,histtype="bar",color="g",edgecolor="b",rwidth=1,alpha=0.6)
# 绘制图形标题和x、y轴的标签
plt.xlabel("箱子重量")
plt.ylabel("箱子的数量(个)")
plt.title("箱子重量分布情况")
plt.show()
图例输出如下:
调用方法:plt.pie(x,labels=list[],colors=list[],autopct="%3.2f%%",startangle=60)
参数说明:(1)x:每个类别的百分比列表;
(2)label:每个类别对应的标签名称列表;
(3)colors:每个类别对应扇形区域的颜色列表;
(4)autopct:自动显示百分比(“ %3.2f ”表示整数部分显示三位,小数部分显示2位,
“ %% ”表示显示%号);
(5)startangle:绘制第一部分的起始角度;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
# 类别列表及其对应的百分比列表
kinds_list=["sleep","entertainment","work","other"]
kinds_percent_list=[0.3,0.05,0.5,0.15]
# 每个类别对应的扇形区域颜色列表
color_list=["#e41a1c","#377eb8","#4daf4a","#984ea3"] # 色号编码
# 绘制饼图
plt.pie(x=kinds_percent_list,labels=kinds_list,colors=color_list,autopct="%3.2f%%",startangle=60)
# 绘制饼图标题
plt.title("一天的各部分时间占比")
plt.show()
图例输出如下:
调用方法:plt.polar(theta,r,color=“y”,linewidth=2,marker="*",mfc="r",ms=float)
参数说明:(1)theta:每个标记点所在射线与极径的夹角列表;
(2)r:每个标记点到极点的距离列表;
(3)color:线条的颜色;
(4)linewidth:线条的宽度;
(5)marker:标记点的样式;
(6)mfc:标记点的颜色;
(7)ms:标记点的大小;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
mark_num=15 # 本次绘图需要标记的极坐标点的数量
# 把2*np.pi均分角度作为15个标记点的极坐标角度---返回的是列表
angle_list=np.linspace(0.0,2*np.pi,mark_num,endpoint=False)
# 随机生成15(mark_num)个半径值--返回的是一个列表
r_list=12*np.random.random(mark_num)
# 绘制极线图
plt.polar(angle_list,r_list,color="yellow",linewidth=2.1,marker="*",mfc="r",ms=8)
plt.title("极线图示例")
plt.show()
图例输出如下:
调用方法:plt.scatter(x,y,s,c,cmap=matplotlib.cm.RdYlBu)
作用:二维数据借助气泡大小来展示三维数据
参数说明:(1)x:x轴上的坐标(列表);
(2)y:y轴上的坐标(列表);
(3)s:散点标记的大小(列表);
(4)c:散点标记的颜色(列表);
(5)cmap:将浮点数映射成颜色的颜色映射表;
(6)marker:标记点的样式;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
# 生成x轴和Y轴的随机列表
x_list=np.random.randn(100) # randn(size):标准正态分布
y_list=np.random.randn(100)
# 标记点大小参数的列表
mark_size_list=np.power(8*x_list+5*y_list,2) # power(x,y):return x的y次方,x可以为列表,也就是列表每个元素的y次方
# 标记点颜色参数的列表
color_list=np.random.rand(100) # rand(size):生成[0,1)之间的随机数
# 绘制气泡图
plt.scatter(x=x_list,y=y_list,s=mark_size_list,c=color_list,cmap=plt.cm.RdYlBu,marker="o")
plt.show()
图例输出如下:
调用方法:plt.stem(x,y,linefmt,markerfmt,basefmt)
作用:绘制离散的有序序列
参数说明:(1)x:指定棉棒的x轴基线位置坐标;
(2)y:棉棒的长度;
(3)linefmt:棉棒的样式;
(4)markerfmt:棉棒末端标记的样式;
(5)basefmt:基线的样式;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
# 生成棉棒x轴基线位置、棉棒长度的列表
x_baseloc_list=np.linspace(1,16,15)
len_x_list=np.random.uniform(-4.0,4.0,15) # uniform(xmin,xmax,num):生成[xmin,xmax)之间的浮点数
# 绘制棉棒图
plt.stem(x_baseloc_list,len_x_list,linefmt="--",markerfmt="*",basefmt="-")
plt.show()
图例输出如下:
调用方法:plt.boxplot(x)
作用:用于统计分析数据特征
参数说明:(1)x:绘制箱型图的输入数据;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
# 生成箱线图的输入数据
data_list=np.random.randn(120)
# 绘制箱线图
plt.boxplot(x=data_list)
# 绘制标题、x和y轴标签名称
plt.title("随机数生成器抗干扰能力的稳定性")
plt.xticks([1],labels=["随机数生成器AlphaRM"]) # 在x轴数值为1的位置绘制变签名labels
plt.ylabel("随机数值")
plt.show()
图例输出如下:
调用方法:plt.errorbar(x,y,fmt="bo:",yerr=float,xerr=float,marker="^",ecolor="y")
作用:绘制y轴方向或x轴方向的误差范围。
参数说明:(1)x:数据点的x轴位置;
(2)y:数据点的y轴位置;
(3)fmt:定义数据折线和数据点的样式;
(4)yerr:y轴的误差范围(以数据点y轴坐标为中心);
(5)xerr:x轴的误差范围(以数据点x轴坐标为中心);
(6)ecolor:误差棒的颜色;
代码示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 确保中文正常显示
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
# 生成数据
x_list=np.linspace(0.1,0.6,6)
y_list=np.exp(x_list)
# 绘制误差棒图
plt.errorbar(x_list,y_list,fmt="bo:",yerr=0.2,xerr=0.02,marker="^",ecolor="y")
plt.show()
图例输出如下: