zoukankan      html  css  js  c++  java
  • pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))

    //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()
    输出结果如下:

    
    

    
    
  • 相关阅读:
    Android SDK 默认位置
    Android点击按钮后改变颜色
    Android设置字体样式
    Android清除缓存的实现
    AndroidStudio Gradle下载速度慢解决方法
    ERROR: SSL peer shut down incorrectly错误解决(Android Studio)
    Android两个页面跳转过程时传递值
    android报错android.view.ViewRootImpl$CalledFromWrongThreadException【本文转载】
    去除searchView的黑框去除
    Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11232627.html
Copyright © 2011-2022 走看看