python seaborn教程_Python数据可视化:绘图工具Seaborn的5个简单技巧

本文介绍了使用Seaborn进行数据可视化的五个实用技巧,包括通过分号抑制文本输出、调整图表大小、改变图例位置、设置图表风格、调整上下文参数以及自定义调色板。通过示例展示了如何使用这些技巧优化散点图,如修改默认样式为'whitegrid',使用'set_context()'增大标签可读性,以及用'set_palette()'定制颜色方案。
摘要由CSDN通过智能技术生成

c14942edc451f1fa420b58e508e6400b.png

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于磐创AI,作者 VK

7838f367e3adef824cdf1dad714ea8f0.png

基线图

本文中的脚本在Jupyter笔记本中的python3.8.3中进行了测试。

让我们使用Seaborn内置的penguins数据集作为样本数据:

# 导入包

import matplotlib.pyplot as plt

import seaborn as sns

# 导入数据

df = sns.load_dataset("penguins").rename(columns={"sex": "gender"})

df

bc80a4e690137e2384e173dd3a5e1aa8.png

我们将使用默认图表设置构建标准散点图,以将其用作基线:

# 图

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

f642f7fd9beefcf25847189a3da50f81.png

我们将看到这个图如何随着每一个技巧而改变。

技巧

你将看到,前两个技巧用于单个绘图,而其余四个技巧用于更改所有图表的默认设置。

f2419a6f0890fbaf7715ea7cc536e513.png

技巧1:分号

你有没有注意到在上一个图中,文本输出就在图表的正上方?抑制此文本输出的一个简单方法是在绘图末尾使用;。

# 图

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender");

3c8ccb23392da01cc01313f5ed589329.png

只需在代码末尾添加;就可以得到更清晰的输出。

技巧2:plt.figure()

绘图通常可以从调整大小中获益。如果我们想调整大小,我们可以这样做:

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender");

c52b5b102c5d34cba830422edcc6ff5c.png

当我们调整大小时,图例移到了左上角。让我们将图例移到图表之外,这样它就不会意外地覆盖数据点:

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.2, 1));

b4a6bae1da5c13f68e2a170e74b4353b.png

如果你想知道如何知道figsize()或bbox_to_anchor()使用什么数的字组合,则需要尝试哪些数字最适合绘图。

技巧3:sns.set_style()

如果不喜欢默认样式,此函数有助于更改绘图的整体样式。这包括轴的颜色和背景。让我们将样式更改为whitegrid,并查看打印外观如何更改:

# 更改默认样式

sns.set_style("whitegrid")

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.2, 1));

19d840b0f9064b12e5ad0b9965a31cf0.png

这里还有一些其他的选择可以尝试:“darkgrid”、“dark”和“ticks”来找到你更喜欢的那个。

技巧4:sns.set_context()

在前面的图中,标签尺寸看起来很小。如果不喜欢默认设置,我们使用sns.set_context()可以更改上下文参数。

我使用这个函数主要是为了控制绘图中标签的默认字体大小。通过更改默认值,我们可以节省时间,而不必为单个绘图的不同元素(例如轴标签、标题、图例)调整字体大小。让我们把上下文改成“talk”,再看看图:

# 默认上下文更改

sns.set_context("talk")

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.3, 1));

7d5b744578289e8cabf2b2857299c25f.png

它更容易辨认,不是吗?另一个可以尝试的选项是:“poster”,这将增加默认大小甚至更多。

技巧5:sns.set_palette()

如果你想将默认调色板自定义为你喜欢的颜色组合,此功能非常方便。我们可以使用Matplotlib中的彩色映射。这里是从颜色库中选择的。让我们将调色板更改为“rainbow”并再次查看该图:

# 更改默认调色板

sns.set_palette("rainbow")

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.3, 1));

3f4ed2405d69366bac1e17303c55a197.png

如果找不到你喜欢的Matplotlib颜色映射,可以手动选择颜色来创建自己独特的调色板。 创建自己调色板的一种方法是将颜色名称列表传递给函数,如下例所示。这个链接是颜色名称列表:https://matplotlib.org/3.1.0/gallery/color/named_colors.html。

# 更改默认调色板

sns.set_palette(["green", "purple", "red"])

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.3, 1));

f751b7baa5e259ddf0f3e39c229355cb.png

如果颜色名称不能很好地捕捉到你所追求的,你可以使用十六进制颜色构建自己的调色板来访问更广泛的选项(超过1600万种颜色!)。这里是我最喜欢的资源,可以找到一个十六进制的自定义调色板。我们来看一个例子:

# 更改默认调色板

sns.set_palette(["#62C370", "#FFD166", "#EF476F"])

# 图

plt.figure(figsize=(9, 5))

sns.scatterplot(data=df, x="body_mass_g", y="bill_length_mm",

alpha=0.7, hue="species", size="gender")

plt.legend(loc="upper right", bbox_to_anchor=(1.3, 1));

611cb73bd743cbdd27fa6f3591c6e258.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值