如何通过2个数字列和1个分类列在seaborn中创建散点图?

时间:2019-10-09 18:23:17

标签: python pandas plot seaborn scatter-plot

pic of my dataframe

我想用两个数值列和一个分类列在seaborn中绘制散点图(但我愿意采用其他方式执行),其中两个数值列的标题在x轴上, y轴上的数字列的值,用色相表示的cat列。 this is kind of like what I want, with the names, firstgame and lastgame on the x axis instead of 1 minute and 15 minute

我的数据集中有50个篮球队,每个篮球队都有自己的行(因此有50行)。每个团队都有一个标签,“好”或“坏”。标签是我想要在绘图中使用的分类列。我想要的第一个数字列具有本赛季第一场比赛的参加人数,第二个数字列具有本赛季最后一场比赛的参加人数。我以为我可以使用seaborn来绘制此图,但是我不确定如何指定x和y。我尝试将两个num列一起添加到列表中,然后从那里开始,但这并没有真正解决。有什么建议么...?提前非常感谢您。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

## sample data, ignore this 
np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,100, (50,2)),
                  columns=['firstgame','lastgame'])
df['label'] = np.random.choice(['good','bad'], 50)

## replace 'index' with your index name if any
sns.lineplot(data=df.reset_index().melt(id_vars=['index','label']), 
             hue='label', 
             style='variable', 
             x='index',
             y='value')

输出:

enter image description here

答案 1 :(得分:0)

尝试以下

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = [[8.98, 1.56, 'fail'],
        [8.91, 5.22, 'success'],
        [5.39, 2.13, 'fail'],
        [5.06, 1.61, 'fail'],
        [5.84, 2.86, 'fail']] 

df=pd.DataFrame(data=data, columns=['firstgame','lastgame','label'])

ax=sns.scatterplot(x='firstgame',y='lastgame',hue='label',data=df)
plt.show()

这将产生:

enter image description here