学术资讯 » 学界研圈

  • 首 页
  • 期刊选题
  • 期刊点评
  • 期刊大全
  • 学人博客
  • 编辑征稿
  • 投稿选刊
  • 万维群组
  • 学术会议
  • 万维读书
  • SCI/E期刊
  • SSCI期刊
  • AHCI期刊
  • Python科研绘图--使用Seaborn绘制直方图

    阅读: 2023/6/15 15:00:46

    作者 / 七八分

    公众号 / 叮当学术

    发布计算机辅助药物设计相关知识,分享分子模拟软件教程及各类科研干货。轻松科研,简单生活~

    全文共3059字,推荐阅读时间3分钟。

    在数据可视化的领域,直方图作为一种常用的图表类型,可以帮助我们理解和揭示数据的分布情况。而Seaborn作为一个强大的Python数据可视化库,提供了简单易用且美观的函数,使绘制直方图变得轻而易举。笔者最近在学习Python,本文就记录一下如何使用Seaborn绘制直方图,以及如何根据需要进行进一步的定制。

    直方图简介

    直方图是一种用于展示数据分布情况的图表类型。它将数据划分为若干等宽的区间(也称为"箱子"或"柱"),并统计每个区间中数据的数量或频率。直方图的横轴代表数据的取值范围,纵轴则表示数据的频数或频率。通过直方图,我们可以了解数据的中心趋势、偏斜程度和异常值等重要信息。

    Seaborn简介

    Seaborn是建立在Matplotlib之上的Python数据可视化库,在 Matplotlib 的基础上,进行了更高级的封装,旨在提供更高级、更美观的图形界面。Seaborn的设计原则是简单性、一致性和美观性。即便是没有什么基础的人,也能通过极简的代码,做出具有分析价值而又十分美观的图形,作图更加方便快捷。它内置了许多常用的数据可视化类型,包括直方图、散点图、线图等,并提供了丰富的定制选项,使用户能够轻松地调整图形的外观和风格。

    绘制直方图

    下面就为大家介绍直方图的绘制方法,只需要很简单的代码:

    首先导入需要的绘图模块:

    import matplotlib.pyplot as plt

    import seaborn as sns

    import pandas as pd

    下面导入数据,最常见的便是Excel的.xlsx文件了,当然也可以是其它的文件格式,导入时提供文件名及sheet名,可以print出来看一下数据有没有问题。

    #读取数据

    df = pd.read_excel('titanic.xlsx','sheetname')

    print(df)

    这里笔者使用的是Seaborn的内置数据,将其复制到了Excel中,如果是做练习,也可直接调用:

    titanic=sns.load_dataset('titanic')

    数据内容如下:

    survived pclass sex age sibsp parch fare embarked class \

    0 0 3 male 22.0 1 0 7.2500 S Third

    1 1 1 female 38.0 1 0 71.2833 C First

    2 1 3 female 26.0 0 0 7.9250 S Third

    3 1 1 female 35.0 1 0 53.1000 S First

    4 0 3 male 35.0 0 0 8.0500 S Third

    .. ... ... ... ... ... ... ... ... ...

    886 0 2 male 27.0 0 0 13.0000 S Second

    887 1 1 female 19.0 0 0 30.0000 S First

    888 0 3 female NaN 1 2 23.4500 S Third

    889 1 1 male 26.0 0 0 30.0000 C First

    890 0 3 male 32.0 0 0 7.7500 Q Third

    who adult_male deck embark_town alive alone

    0 man True NaN Southampton no False

    1 woman False C Cherbourg yes False

    2 woman False NaN Southampton yes True

    3 woman False C Southampton yes False

    4 man True NaN Southampton no True

    .. ... ... ... ... ... ...

    886 man True NaN Southampton no True

    887 woman False B Southampton yes True

    888 woman False NaN Southampton no False

    889 man True C Cherbourg yes True

    890 man True NaN Queenstown no True

    [891 rows x 15 columns]

    需要注意的是,该示例数据中“age”一列有缺失的值,如果需要使用该列数据绘制图形,需要先做一个缺失值的去除,可以直接使用dropna() 方法删掉存在缺失值的数据:

    #去除“age”列的缺失值

    new_age=df['age'].dropna()

    下面设置画布的大小,风格,字体及其大小,根据需要设置即可。

    #设置画布的大小、绘图风格、字体类型和大小

    sns.set_theme(style='white',font='Arial',font_scale=1.2,rc={'figure.figsize':(8,4)})

    接下来就可以直接绘制直方图了,这里笔者选择绘制直方图的同时拟合密度曲线,方便观察数据分布的变化规律;并且提供了颜色代码,设置图形的颜色;如果数据量很大,可以通过“log_scale”参数设置x轴或y轴是否log处理。

    #绘制直方图+密度曲线

    sns.histplot(data=df, x=new_age,kde=True,bins=30,log_scale=(False, False),color="#4CB391",)

    此时绘制的图形如下:

    如果不需要密度曲线,可以将上面代码的“kde=True”更改为“kde=False”,默认为“True”。

    代码中的“bins”可控制分布柱形的数量,如增加数量:

    sns.histplot(data=df, x=new_age,kde=True,bins=100,log_scale=(False, False),color="#4CB391",)

    还可以对图形最更细节的修改,如更改x轴或y轴的名称,更改x轴和y轴标签的字体和大小等。

    #更改x轴或y轴的名称

    plt.xlabel('New_name')

    plt.ylabel('New_Count')

    # 更改x轴和y轴标签的字体和大小

    plt.xticks(fontname='Arial', fontsize=12)

    plt.yticks(fontname='Arial', fontsize=12)

    最后,可以将绘制好的图形保存,也可选择其它格式图像保存;通过“bbox_inches='tight'”来避免保存时部分文字被遮挡的情况。

    plt.savefig('Histogram.png',dpi=600,bbox_inches='tight')

    完整的代码如下:

    import matplotlib.pyplot as plt

    import seaborn as sns

    import pandas as pd

    #去除“age”列的缺失值

    new_age=df['age'].dropna()

    #设置画布的大小、绘图风格、字体类型和大小

    sns.set_theme(style='white',font='Arial',font_scale=1.2,rc={'figure.figsize':(8,4)})

    #绘制直方图+密度曲线

    sns.histplot(data=df, x=new_age,kde=True,bins=30,log_scale=(False, False),color="#4CB391",)

    #导出图像,设置dpi为600

    plt.savefig('Histogram.png',dpi=600,bbox_inches='tight')

    以上就是本期内容为大家分享的使用python绘制直方图的全部内容了。

    转自:“叮当学术”微信公众号

    如有侵权,请联系本站删除!


    浏览(170)
    点赞(0)
    收藏(0)
  • 上一篇:【学术报道】强微绕量子态选择布居研究获进展

    下一篇:经验|牛刊投稿有“玄机”——越“热”越易中

  • 首页

  • 文章

  • 期刊

  • 帮助

  • 我的

版权所有 Copyright@2023    备案号:豫ICP备2021036211号