【发布时间】:2019-10-17 01:14:08
【问题描述】:
这是来自solution 的后续问题。 kind=line 时会自动分配不同的颜色,但对于散点图则不然。
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)
有一个相关问题here。有什么简单的解决方法吗?
更新:
当我尝试@ImportanceOfBeingErnest 为带有字符串的label 列推荐的解决方案时,它不起作用!
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)
它会引发以下错误,
ValueError:无效的 RGBA 参数:“是”
在处理上述异常的过程中,又发生了一个异常:
【问题讨论】:
-
你仅限于 matplotlib 吗?如果不尝试查看
seaborn,它是 mpl 的包装器并减少了样板代码(并且 DataFrames 是一等公民) -
ax.scatter(x = "Xcoord", y = "Ycoord", c='ProjID', data=df)呢? -
似乎有效,谢谢!但是为什么
pd.groupby.plot()对此不起作用?有什么解决办法吗? -
@ImportanceOfBeingErnest,如果“标签”列是字符串,那么推荐的解决方案不起作用
-
是的,matplotlib 不理解“分类”颜色。当然还有其他选择,比如创建一个新列,其中字符串映射到数字,或者循环 df.groupby 并创建单独的散点图
标签: python pandas matplotlib