簡體   English   中英

如何使用Seaborn連續繪制多個圖形

[英]How to plot multiple figures in a row using seaborn

我有一個看起來像這樣的數據框df

df.head()
id        feedback        nlp_model        similarity_score
0xijh4    1               tfidf            0.36
0sdnj7    -1              lda              0.89
kjh458    1               doc2vec          0.78
....

我想繪制similairty_score使用seaborn每個在獨特的價值觀與反饋的箱線圖形式model柱: tfidfldadoc2vec 我的代碼如下:

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'], color="0.25")

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'], color="0.25")

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'], color="0.25")

plt.show()

問題在於這會在另一個之上創建3個地塊。

在此處輸入圖片說明

如何生成這些相同的圖,但全部顯示在一條直線上,一個軸僅在最左側的圖上標記“相似度分數”,而在每個圖的正下方標記“反饋”軸標簽?

每次繪制時,您都在創建新的圖形。 因此,您可以刪除對plt.subplots()所有調用,但只刪除其中之一

該seaborn swarmplot()boxplot()接受ax參數即你可以告訴它軸密謀。 因此,使用以下命令創建圖形,子圖和軸:

fig, (ax1, ax2, ax3) = plt.subplots(1, 3)

然后,您可以執行以下操作:

sns.boxplot(x="x_vals", y="y_vals", data=some_data, ax=ax1)

然后,您可以根據需要操縱軸。 例如,僅在某些子圖等上刪除y軸標簽。

fig, (ax1, ax2, ax3) = plt.subplots(1,3,figsize=(10,8))

sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'], ax=ax1)
sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'], color="0.25", ax=ax1)

sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'], ax=ax2)
sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'], color="0.25", ax=ax2)

ax2.set_ylabel("")  # remove y label, but keep ticks

sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'], ax=ax3)
sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'], color="0.25", ax=ax3)

ax3.set_ylabel("")  # remove y label, but keep ticks

plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM