簡體   English   中英

如何在一個 plot 和 seaborn 上繪制數據網格的群圖 plot

[英]How to plot a swarmplot of a grid of data, on one plot with seaborn

我已經嘗試了 plot seaborn 上的數據,來自 pandas dataframe。任何建議將不勝感激。

數據在 dataframe 中,看起來像這樣,有 12 個月,11 列加上一個月列:

  Month   FSRPX1M     VOX1M     XLB1M  ...     XLP1M     XLU1M     XLV1M     XLY1M
0   Jan  0.087643 -0.561428 -0.409286  ... -0.177143  0.232858  0.521428  0.457857
1   Feb  0.132429 -0.265715  0.470715  ...  0.067142 -0.479286 -0.177143  0.363571
2   Mar  0.152429  1.002142  0.437857  ...  0.588573  0.671428  0.055000  0.727856
3   Apr  0.150071  2.445000  1.331428  ...  0.551428  1.100715  0.790715  2.175714
4   May -0.089429 -0.115714  0.275000  ...  0.240000  0.113572  0.650716 -0.366429

我想要做的是 plot 群 plot,X 軸為月份,Y 軸為數字,每個月有 11 個“點”,代表 11 列,並帶有相關的顏色編碼鍵。

我嘗試了各種方法,包括 [其中 df 是 dataframe,val_list 是我想要作為點的列的列表]:

sns.swarmplot(data = df, x=df['Month'], y = df[val_list])

sns.swarmplot(data = df, x=df['Month'], hue = df[val_list])

以及嘗試對 dataframe 進行切片,並生成 plot,使用 for 循環一次一列:

for e in val_list:
    sns.stripplot(data = df, x=df['Month'], y = df[e])

對我做錯了什么的任何幫助和解釋都會很棒,謝謝

最后一個是 plot,但是所有的點都是相同的顏色並且沒有標記

要使用hue , Seaborn 需要“長格式”的數據。 Pandas 的melt可用於將“寬”dataframe 轉換為“長”。 Set3顏色圖有 12 個 colors(默認的tab10只有 10 個)。

from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

elements = ['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron', 'Carbon',
            'Nitrogen', 'Oxygen', 'Fluorine', 'Neon', 'Sodium']
df = pd.DataFrame(np.random.randn(12, len(elements)), columns=elements)
df['Month'] = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

df_long = df.melt(id_vars='Month', var_name='Element', value_name='Value')

ax = sns.swarmplot(data=df_long, x='Month', y='Value', hue='Element', palette='Set3')
ax.legend(bbox_to_anchor=(1.01, 1.02), loc='upper left', title='Element')
plt.tight_layout()
plt.show()

帶有長數據幀的 sns.swarmplot

暫無
暫無

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

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