博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))...
阅读量:4550 次
发布时间:2019-06-08

本文共 5297 字,大约阅读时间需要 17 分钟。

//2019.07.23

1、箱形图,又称为盒式图一般可以很好地反映出数据分布的特征,也可以进行多项数据之间分布特征的比较,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据

其中的一些参数具体含义及其计算过程如下:

2、双轴图的绘制代码:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中文正常输出
plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线里的负号
import warnings
warnings.filterwarnings("ignore") #忽略相应的警告信息
df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导入w我们的表格数据文件
print(df)
print(df.index)
print(df.columns)
d=df[:5]
print(d)
2、#双轴图的绘制.twinx()
import matplotlib.mlab as mlab
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(1,1,1)
n,bins,patches=ax1.hist(df["评分"],bins=100,color="m")

ax1.set_ylabel("电影数量",fontsize=15)

ax1.set_xlabel("评分",fontsize=15)
ax1.set_title("频率分布直方图",fontsize=20)

y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #生成正态分布函数

ax2=ax1.twinx() #定义新的双轴图函数
ax2.plot(bins,y,"b--")
ax2.set_ylabel("概率分布",fontsize=15)

3、#散点图的绘制plt.scatter(x,y)绘制散点图

x=df["评分人数"][::10]
y=df["评分"][::10] #隔10个点进行选取数据点
plt.figure(2)
plt.scatter(x,y,color="r",marker="p") #散点图函数图像输出
plt.xlabel("评分",fontsize=15)
plt.ylabel("评分人数",fontsize=15)
plt.title("酒店评分与人数散点图",fontsize=20)
4、#箱线图的绘制
d=df[df.类型=="商务出行"]["评分"]
print(d)
plt.figure(4)
plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})

#箱线图的格式设置和调整

plt.title("商务出行酒店的评分数据分布",fontsize=17)
#多组数据的箱线图
d1=df[df.类型=="浪漫情侣"]["评分"]
d2=df[df.类型=="地铁周边"]["评分"]
d3=df[df.类型=="休闲度假"]["评分"]
d4=df[df.类型=="海滨风光"]["评分"]
d5=df[df.类型=="交通方便"]["评分"]
d6=df[df.类型=="商务出行"]["评分"]
plt.figure(5)
plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通方便","商务出行"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"}
,vert=True) #多组数据分布特征比较,vert决定了整体图像的横向与纵向
#坐标轴的编辑与改变
ax=plt.gca() #坐标轴的编辑与改变
ax.patch.set_facecolor("white") #设置坐标轴的背景颜色
ax.patch.set_alpha(0.3) #设置配色和透明度
plt.title("不同类型酒店的评分箱线图",fontsize=20)
plt.xlabel("酒店类型",fontsize=15)
plt.ylabel("评分大小",fontsize=15)
#相关系数矩阵图
df1=df[["评分","评分人数"]]
df1["排序"]=np.random.randint(1,100,396)
print(df1)
r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))
#对于多个数据减的散点图绘制函数参数设置,diagonal表示对角线图像kde/hist(数据密度图或者直方图选择)

5、#相关系数热力图

import seaborn as sns
corr=df1.corr()
corr=abs(corr)
ax=plt.figure(figsize=(10,8))
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)

plt.xticks(fontsize=15)

plt.yticks(fontsize=15)
plt.xlabel("数据名称",fontsize=15)
plt.ylabel("数据名称",fontsize=15)
plt.title("不同数据间相关系数矩阵图",fontsize=20)
plt.show()

整体运行代码如下:

import numpy as np import matplotlib.pyplot as plt import pandas as pd plt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中文正常输出 plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线里的负号 import warnings warnings.filterwarnings("ignore") #忽略相应的警告信息 df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导入w我们的表格数据文件 print(df) print(df.index) print(df.columns) d=df[:5] print(d) #双轴图的绘制.twinx() import matplotlib.mlab as mlab fig=plt.figure(figsize=(10,8)) ax1=fig.add_subplot(1,1,1) n,bins,patches=ax1.hist(df["评分"],bins=100,color="m") ax1.set_ylabel("电影数量",fontsize=15) ax1.set_xlabel("评分",fontsize=15) ax1.set_title("频率分布直方图",fontsize=20) y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #生成正态分布函数 ax2=ax1.twinx()          #定义新的双轴图函数 ax2.plot(bins,y,"b--") ax2.set_ylabel("概率分布",fontsize=15) #散点图的绘制plt.scatter(x,y)绘制散点图 x=df["评分人数"][::10] y=df["评分"][::10]     #隔10个点进行选取数据点 plt.figure(2) plt.scatter(x,y,color="r",marker="p")        #散点图函数图像输出 plt.xlabel("评分",fontsize=15) plt.ylabel("评分人数",fontsize=15) plt.title("酒店评分与人数散点图",fontsize=20) #箱线图的绘制 d=df[df.类型=="商务出行"]["评分"] print(d) plt.figure(4) plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"}) #箱线图的格式设置和调整 plt.title("商务出行酒店的评分数据分布",fontsize=17) #多组数据的箱线图 d1=df[df.类型=="浪漫情侣"]["评分"] d2=df[df.类型=="地铁周边"]["评分"] d3=df[df.类型=="休闲度假"]["评分"] d4=df[df.类型=="海滨风光"]["评分"] d5=df[df.类型=="交通方便"]["评分"] d6=df[df.类型=="商务出行"]["评分"] plt.figure(5) plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通方便","商务出行"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"} ,vert=True) #多组数据分布特征比较,vert决定了整体图像的横向与纵向 #坐标轴的编辑与改变 ax=plt.gca()  #坐标轴的编辑与改变 ax.patch.set_facecolor("white")  #设置坐标轴的背景颜色 ax.patch.set_alpha(0.3)    #设置配色和透明度 plt.title("不同类型酒店的评分箱线图",fontsize=20) plt.xlabel("酒店类型",fontsize=15) plt.ylabel("评分大小",fontsize=15) #相关系数矩阵图 df1=df[["评分","评分人数"]] df1["排序"]=np.random.randint(1,100,396) print(df1) r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10)) #对于多个数据减的散点图绘制函数参数设置,diagonal表示对角线图像kde/hist #相关系数热力图 import seaborn as sns corr=df1.corr() corr=abs(corr) ax=plt.figure(figsize=(10,8)) ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05) plt.xticks(fontsize=15) plt.yticks(fontsize=15) plt.xlabel("数据名称",fontsize=15) plt.ylabel("数据名称",fontsize=15) plt.title("不同数据间相关系数矩阵图",fontsize=20) plt.show() 输出结果如下:

 

 

 

 

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11232627.html

你可能感兴趣的文章
JavaScript 字符串(String) 对象
查看>>
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
C++ ACM基础
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
使用最快的方法计算2的16次方是多少?
查看>>
urllib 中的异常处理
查看>>
【SQL Server高可用性】高可用性概述
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
SQL优化:重新编译存储过程和表
查看>>
PCB“有铅”工艺将何去何从?
查看>>
Solr环境搭建
查看>>
ASP.NET的URL过滤
查看>>
自己写的Web服务器
查看>>