我的群图中的色调有什么问题?
What is the problem with hue in my swarmplot?
我有这个数据集:https://www.kaggle.com/abcsds/pokemon/download。我加载它并做了一些更改:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
pokemons=pd.read_csv('../input/pokemon/Pokemon.csv')
del pokemons['Type 2']
pokemons.rename(columns={'Type 1':'Type'},inplace=True)
我想要的是为 hue=Legendary 的每种口袋妖怪类型的每个统计数据制作一些群图。我想想象一下传奇口袋妖怪的位置。我已经做了没有色调的群图。首先,我需要融化数据框:
pok_melt=pd.melt(pokemons,id_vars=['Name','Type','Legendary'],value_vars=['HP','Defense','Attack','Sp. Atk','Sp. Def','Speed'])
pok_melt.head()
然后,swarmplots 的代码(有一次我需要为另一个地块按字母顺序排列类型名称,这就是它们被排序的原因):
list_types=pokemons['Type'].unique().tolist()
list_types.sort()
list_types
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,y=pok_melt[pok_melt.Type==i].value,palette='gist_stern')
plt.title(i)
plt.xlabel('')
这些是一些群图:
所以我尝试这样做:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,y=pok_melt[pok_melt.Type==i].value,palette='gist_stern',
hue=pok_melt.Legendary)
plt.title(i)
plt.xlabel('')
我收到此错误:IndexError:布尔索引与维度 0 上的索引数组不匹配;维度是 69 但相应的布尔维度是 800
过滤列 Legendary
喜欢 y
参数:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,
y=pok_melt[pok_melt.Type==i].value,
hue=pok_melt[pok_melt.Type==i].Legendary,
palette='gist_stern')
plt.title(i)
plt.xlabel('')
或者更好的是只过滤一次变量 df
并将列 df['value']
分配给 y
并将 df['Legendary']
分配给 hue
:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
df = pok_melt.loc[pok_melt.Type==i]
sns.swarmplot(x=pok_melt.variable,
y=df['value'],
hue=df['Legendary'],
palette='gist_stern')
plt.title(i)
plt.xlabel('')
我有这个数据集:https://www.kaggle.com/abcsds/pokemon/download。我加载它并做了一些更改:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
pokemons=pd.read_csv('../input/pokemon/Pokemon.csv')
del pokemons['Type 2']
pokemons.rename(columns={'Type 1':'Type'},inplace=True)
我想要的是为 hue=Legendary 的每种口袋妖怪类型的每个统计数据制作一些群图。我想想象一下传奇口袋妖怪的位置。我已经做了没有色调的群图。首先,我需要融化数据框:
pok_melt=pd.melt(pokemons,id_vars=['Name','Type','Legendary'],value_vars=['HP','Defense','Attack','Sp. Atk','Sp. Def','Speed'])
pok_melt.head()
然后,swarmplots 的代码(有一次我需要为另一个地块按字母顺序排列类型名称,这就是它们被排序的原因):
list_types=pokemons['Type'].unique().tolist()
list_types.sort()
list_types
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,y=pok_melt[pok_melt.Type==i].value,palette='gist_stern')
plt.title(i)
plt.xlabel('')
这些是一些群图:
所以我尝试这样做:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,y=pok_melt[pok_melt.Type==i].value,palette='gist_stern',
hue=pok_melt.Legendary)
plt.title(i)
plt.xlabel('')
我收到此错误:IndexError:布尔索引与维度 0 上的索引数组不匹配;维度是 69 但相应的布尔维度是 800
过滤列 Legendary
喜欢 y
参数:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
sns.swarmplot(x=pok_melt.variable,
y=pok_melt[pok_melt.Type==i].value,
hue=pok_melt[pok_melt.Type==i].Legendary,
palette='gist_stern')
plt.title(i)
plt.xlabel('')
或者更好的是只过滤一次变量 df
并将列 df['value']
分配给 y
并将 df['Legendary']
分配给 hue
:
plt.figure(figsize=(17,22))
k=1
for i in list_types:
plt.subplot(6,3,k)
k=k+1
df = pok_melt.loc[pok_melt.Type==i]
sns.swarmplot(x=pok_melt.variable,
y=df['value'],
hue=df['Legendary'],
palette='gist_stern')
plt.title(i)
plt.xlabel('')