使用 Seaborn 在 Python 中简化数据可视化

Seaborn 通过为您提供一系列“开箱即用”的绘图类型,使复杂的事情变得简单。
105 位读者喜欢这篇文章。
Analytics: Charts and Graphs

JuralMin, CC0。Jason Baker 修改。

在 Seaborn 中绘图比在 Matplotlib 中简单得多。虽然 Matplotlib 使困难的事情成为可能,但 Seaborn 通过为您提供一系列“开箱即用”的绘图类型,使复杂的事情变得简单。

几乎只需一行代码…

在本系列中,我通过在每个库中绘制相同的图表来比较 Python 绘图库。这是一个英国选举结果的多组条形图。

在我们继续之前,请注意您可能需要调整您的 Python 环境才能运行此代码,包括以下内容。

  • 运行最新版本的 Python(LinuxMacWindows 的说明)
  • 验证您正在运行的 Python 版本与这些库兼容

数据可在线获取,可以使用 pandas 导入

import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv') 

以下是如何在 Seaborn 中创建此多组条形图

    ax = sns.barplot(
        data=df,
        x="year",
        y="seats",
        hue="party",
        palette=['blue', 'red', 'yellow', 'grey'],
        saturation=0.6,
    )

结果

A multi-bar plot, with (almost) one line of Python.

一个多条形图,几乎只需一行 Python 代码。(© 2019 Anvil

Seaborn 具有如此简单的界面,因为它不需要您操纵数据结构来定义绘图的外观。相反,您将数据整理成 长格式,然后完成数据操作。您只需告诉 Seaborn 将绘图的哪些方面映射到数据中的哪些变量即可。

如果您想在条形的 hue 中编码 party 变量,请指定

hue="party"

如果您想在 X 轴上的位置编码 year 变量,请指定

x="year"

Seaborn 处理颜色的方式非常有趣。您可以使用人类可读的颜色名称来指定颜色。我使用了红色、蓝色、黄色和灰色,但您也可以使用像丑陋的绿色、暗淡的蓝色和电紫色这样的颜色。这些颜色被映射到由 XKCD 作者 Randall Munroe 创建的 众包颜色名称定义库

Just a few of the uncannily accurate XKCD color names

仅举几个出奇准确的 XKCD 颜色名称(© 2019 Anvil

为了完整起见,我必须提及在绘图语句之前需要运行几行样板代码

    # A couple of lines of boilerplate
    sns.set()
    plt.figure()

当然,您必须导入库和数据

    # Import Matplotlib and Seaborn
    import matplotlib.pyplot as plt
    import seaborn as sns

由于这是一个 Matplotlib 的包装器,您仍然需要在最后施放 Matplotlib 绘图魔法

    plt.show()

毫不妥协

好的,所以我有了这个非常漂亮的界面,它使常见的绘图变得非常简单。但这不会剥夺我的能力吗?幸运的是,事实并非如此。Seaborn 是一种很好的抽象——它使常见情况变得非常容易,但它也让您可以访问较低级别的抽象。就像 Anvil 一样,Seaborn 为您提供了“逃生舱口”,以便在需要时使用底层。

当我调用 sns.barplot 时,它返回了该绘图的 Matplotlib Axis 对象。我可以使用它来添加标题和网格,并调整轴标签,就像我在 Matplotlib 中所做的那样

    ax.set_title('UK election results')

    ax.grid(color='#cccccc')

    ax.set_ylabel('Seats')
    ax.set_xlabel(None)
    ax.set_xticklabels(df["year"].unique().astype(str), rotation='vertical')

这是结果

Seaborn plot, now with Matplotlib tweaks

Seaborn 绘图,现在进行了 Matplotlib 调整。(© 2019 Anvil

您可以将此示例复制为 Anvil 应用程序 此处(注意:Anvil 需要注册才能使用)。

下一步:客户端 Python 中的动态绘图

Seaborn 是我最喜欢的绘图库之一,这归功于其简洁性和强大功能的结合。但它生成的是静态图像,如果您在 Web 上使用它们,您可能需要更多交互性。

下次,我将看看 Plotly,它允许您在浏览器中创建动态绘图,并通过 JavaScript 核心提供 Python 接口。


本文基于 如何在 Anvil 的博客上使用 Seaborn 制作绘图,并已获得许可重复使用。

接下来阅读什么
User profile image.
Shaun 通过在世界上最大的激光系统中模拟燃烧的聚变等离子体开始了认真的编程。他爱上了 Python 作为数据分析工具,并且从未回头。现在他想把一切都变成 Python。

贡献者

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.