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