許多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中文網其他相關文章!