单个图中的 Pandas groupby 散点图 [英] Pandas groupby scatter plot in a single plot

查看:50
本文介绍了单个图中的 Pandas groupby 散点图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是此

另一个选项如注释中的建议:按类别类型将值映射到数字:

fig, ax = plt.subplots(figsize=(8,6))ax.scatter(df.x, df.y, c = pd.Categorical(df.label).codes, cmap='tab20b')plt.show()

输出:

This is a followup question from this solution. There is automatic assignment of different colors when kind=line but for scatter plot that's not the case.

import pandas as pd
import matplotlib.pylab as plt
import numpy as np

# random df
df = pd.DataFrame(np.random.randint(0,10,size=(25, 3)), columns=['label','x','y'])

# plot groupby results on the same canvas 
fig, ax = plt.subplots(figsize=(8,6))
df.groupby('label').plot(kind='scatter', x = "x", y = "y", ax=ax)

There is a connected issue here. Is there any simple workaround for this?

Update:

When I try the solution recommended by @ImportanceOfBeingErnest for a label column with strings, its not working!

df = pd.DataFrame(np.random.randint(0,10,size=(5, 2)), columns=['x','y'])
df['label'] = ['yes','no','yes','yes','no']
fig, ax = plt.subplots(figsize=(8,6))
ax.scatter(x='x', y='y', c='label', data=df) 

It throws following error,

ValueError: Invalid RGBA argument: 'yes'

During handling of the above exception, another exception occurred:

解决方案

IIUC you can use sns for that purpose:

df = pd.DataFrame(np.random.randint(0,10,size=(100, 2)), columns=['x','y'])
df['label'] = np.random.choice(['yes','no','yes','yes','no'], 100)
fig, ax = plt.subplots(figsize=(8,6))
sns.scatterplot(x='x', y='y', hue='label', data=df) 
plt.show()

Output:

Another option is as what suggested in the comment: Map value to number, by categorical type:

fig, ax = plt.subplots(figsize=(8,6))
ax.scatter(df.x, df.y, c = pd.Categorical(df.label).codes, cmap='tab20b')
plt.show()

Output:

这篇关于单个图中的 Pandas groupby 散点图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆