首页 > 后端开发 > Python教程 > 如何在定义的 Matplotlib 子图中绘制 Seaborn 图?

如何在定义的 Matplotlib 子图中绘制 Seaborn 图?

Patricia Arquette
发布: 2024-11-01 18:02:02
原创
423 人浏览过

How to Plot Seaborn Plots Within Defined Matplotlib Subplots?

seaborn 不在定义的子图中绘图

许多 seaborn 绘图可以使用 matplotlib.pyplot.subplots 函数在子图中绘制,与常规 matplotlib 绘图的方式相同可以绘制。 然而,有些函数有一些限制,例如没有 ax 参数

seaborn.distplot 的弃用

在版本 0.11 之前,seaborn.distplot 函数被用来绘制许多不同类型的图分布。 Seaborn 0.11 已弃用此函数

seaborn.distplot() has been DEPRECATED in seaborn 0.11 and is replaced with the following:

displot(), a figure-level function with a similar flexibility over the kind of plot to draw. This is a FacetGrid, and does not have the ax parameter, so it will not work with matplotlib.pyplot.subplots.

histplot(), an axes-level function for plotting histograms, including with kernel density smoothing. This does have the ax parameter, so it will work with matplotlib.pyplot.subplots.
登录后复制

查找正确的函数

对于任何没有 ax 参数的seaborn 函数,有一个相应的轴级函数可以替代。 要找到正确的函数,您可以参考图形级绘图的seaborn文档来查找合适的轴级绘图函数。

这里是没有轴的图形级绘图的列表参数:

  • relplot
  • displot
  • catplot

在同一行绘制不同的图

在此在这种情况下,目标是在同一行上绘制两个不同的直方图。 由于 displot 是图形级函数,并且没有 ax 参数,因此它不能与 matplotlib.pyplot.subplots 一起使用。 在这种情况下,正确使用的函数是 histplot,它是一个具有 ax 参数的轴级函数。

以下是使用 histplot 在同一行上绘制两个不同直方图的示例:

<code class="python">import seaborn as sns
import matplotlib.pyplot as plt

# load data
penguins = sns.load_dataset("penguins", cache=False)

# select the columns to be plotted
cols = ['bill_length_mm', 'bill_depth_mm']

# create the figure and axes
fig, axes = plt.subplots(1, 2)
axes = axes.ravel()  # flattening the array makes indexing easier

for col, ax in zip(cols, axes):
    sns.histplot(data=penguins[col], kde=True, stat='density', ax=ax)

fig.tight_layout()
plt.show()</code>
登录后复制

这将生成一个在同一行上绘制两个直方图的图形。

从多个数据帧绘制不同的图

如果您有多个数据帧,您可以将它们组合起来使用pandas pd.concat,然后使用分配方法创建一个标识“源”列,该列可用于指定row=或col=,或作为色调参数

<code class="python"># list of dataframe
lod = [df1, df2, df3]

# create one dataframe with a new 'source' column to use for row, col, or hue
df = pd.concat((d.assign(source=f'df{i}') for i, d in enumerate(lod, 1)), ignore_index=True)</code>
登录后复制

然后你可以使用此组合数据框使用seaborn绘制各种不同的图。

有关更多信息,请参阅以下资源:

  • [Seaborn 文档](https://seaborn.pydata .org/)
  • [使用 Matplotlib 绘制子图](https://matplotlib.org/stable/tutorials/intermediate/subplots.html)
  • [Seaborn 和 Pandas 集成](https: //seaborn.pydata.org/tutorial/using_pandas.html)

以上是如何在定义的 Matplotlib 子图中绘制 Seaborn 图?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板