许多 seaborn 绘图可以使用 matplotlib.pyplot.subplots 函数在子图中绘制,与常规 matplotlib 绘图的方式相同可以绘制。 然而,有些函数有一些限制,例如没有 ax 参数
在版本 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文档来查找合适的轴级绘图函数。
这里是没有轴的图形级绘图的列表参数:
在此在这种情况下,目标是在同一行上绘制两个不同的直方图。 由于 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绘制各种不同的图。
有关更多信息,请参阅以下资源:
以上是如何在定义的 Matplotlib 子图中绘制 Seaborn 图?的详细内容。更多信息请关注PHP中文网其他相关文章!