Matplotlib groupby scatter colormap警告:“没有通过'c'提供的颜色Map数据“

9vw9lbht  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(727)

我在使用pandas groupby创建简单散点图时遇到了颜色Map问题。

示例

import pandas as pd
df = pd.DataFrame(data= {'class': ['A']*5 + ['B']*5,
                         'index': [i for i in range(10)],
                         'data': [i for i in range(5)] + [i+1 for i in range(5)]})
# Plotting
fig, ax = plt.subplots()
for key, grp in df.groupby('class'):
    grp.plot.scatter(ax=ax, x='index', y='data', label=key)

我得到的警告

/opt/miniconda3/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py:1114:用户警告:没有通过“c”提供颜色Map的数据。参数“cmap”将被忽略scatter = ax.scatter(

输出图

散点图已经生成,但是matplotlib对两个类使用相同的颜色。

如果我使用df.plot()而不是df.plot.scatter(),则不会打印警告,并且图显示如预期的那样,两个类的颜色不同。因此,这似乎是scatter的问题。我做错了什么?

软件包版本:

pandas:      1.4.3
matplotlib:  3.6.2
nlejzf6q

nlejzf6q1#

对于散点图,点的颜色由附加参数c定义,在您的情况下,该参数是相同的,即None用于绘制每个散点图的两次调用。
您需要将c定义为在两个调用中都不同,那么给它一些随机颜色怎么样?

from random import randint

# Plotting
fig, ax = plt.subplots()
for key, grp in df.groupby('class'):
    random_color="#" + f"{randint(0, 0xFFFFFF):06x}"
    grp.plot.scatter(ax=ax, x='index', y='data', label=key,
                     c=random_color,
                    )

问候。

相关问题