【问题标题】:Matplotlib > ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers, not [color list]Matplotlib > ValueError: 'c' argument must be a color, a sequence of colours, or a sequence of numbers, not [color list]
【发布时间】: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


【解决方案1】:

这是因为我认为 c 需要一个二维数组。 https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html

将系列对象包含在列表中对我来说是数字系列对象。我认为这应该可行

plt.scatter(x=df['ratings'], y=df['viewership'], c=[df['rating_categories']])

【讨论】:

    【解决方案2】:

    使用十六进制颜色代码代替颜色名称。 例如'#ff1500''red' 等。

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2022-07-27
      • 2023-04-10
      • 2015-11-08
      相关资源
      最近更新 更多