【发布时间】:2021-08-13 14:01:54
【问题描述】:
我正在尝试生成一个简单的散点图,但我无法使用 c 参数添加第三列。不知道怎么回事:
plt.scatter(x=df['ratings'], y=df['viewership'], c=df['rating_categories'].to_list())
我正在尝试根据价值使用 4 个不同的类别对评级进行编码,并且我已经在 rating_categories 中将它们与它们的特定颜色进行了映射。评级类别现在是一个列表:
>>> df['rating_categories'].to_list()
['orange',
'lightgreen',
'orange',
'orange',
'lightgreen',
'orange',
'lightgreen',
'orange',
'lightgreen',
'lightgreen',
...
]
我做错了什么?总是出现这个错误:
ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers, not ['orange', 'lightgreen', 'orange', 'orange' ..., ]
我也尝试过使用color 参数。没用。
但是,相同的列适用于带有 hue 参数的 Seaborn 散点图。
【问题讨论】:
-
什么是
len(df.ratings)和len(df.rating_categories.to_list())?后者是列表列表还是什么? -
根据您的输出,
df['rating_categories'].to_list()是一个列表列表,但它必须只是一个列表(请参阅输出中的额外[) -
抱歉,这不是列表列表。我在写问题时添加了一个额外的括号。修复它@Stef
-
@MustafaAydın 他们的长度是一样的。在
df.rating_categories.to_list()我只是将 Pandas 系列转换为常规 python 列表 -
@BexTuychiev 也许那里有一个不受支持的颜色名称。在
import matplotlib.colors as mcolors之后pd.Index(df.rating_categories).difference(mcolors.CSS4_COLORS.keys()).tolist()的结果是什么?
标签: python pandas matplotlib seaborn data-visualization