首页 > 解决方案 > 使用 pandas.DataFrame.plot.scatter() 的 Matplotlib 警告

问题描述

一个 Windows 10,版本:Python 3.5.2、pandas 0.23.4、matplotlib 3.0.0、numpy 1.15.2,以下代码给我以下警告,我想整理一下

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

# a 5x4 random pandas DataFrame
pf = pd.DataFrame(np.random.random((5,4)), columns=['a', 'b', 'c', 'd'])

# colors: 
colors = cm.rainbow(np.linspace(0, 1, 4))

fig1 = pf.plot.scatter('a', 'b', color='k')
for i, j in enumerate(['b', 'c', 'd']):
    pf.plot.scatter('a', j, color=colors[i+1], ax = fig1)

我得到一个警告:

'c' 参数看起来像单个数字 RGB 或 RGBA 序列,应避免使用它,因为在其长度与 'x' 和 'y' 匹配的情况下,值映射将具有优先权。如果您真的想为所有点指定相同的 RGB 或 RGBA 值,请使用单行的二维数组。

你能告诉我如何解决这个警告吗?

标签: python-3.xpandasmatplotlib

解决方案


我无法使用 matplotlib 3.0 和 pandas 0.23.4 重现警告,但它所说的本质上是您不应该使用单个 RGB 元组来指定颜色。

所以而不是color=colors[i+1]使用

color=[colors[i+1]]

推荐阅读