Python Matplotlib';s colormap未应用于散点图,未返回任何错误

Python Matplotlib';s colormap未应用于散点图,未返回任何错误,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我正在构建一个简单的散点图,从xls文件中读取数据。 与“手动”设置每个不同值的颜色不同,我想使用一个colormaps matplotlib(“例如viridis”) 根据我在互联网上找到的一些示例,我编写了以下代码: import pandas as pd import matplotlib.pyplot as plt import matplotlib.cm as cm data = pd.read_excel('sample.xls', sheet_name=0) data.head(

我正在构建一个简单的散点图,从xls文件中读取数据。 与“手动”设置每个不同值的颜色不同,我想使用一个colormaps matplotlib(“例如viridis”)

根据我在互联网上找到的一些示例,我编写了以下代码:

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

data = pd.read_excel('sample.xls', sheet_name=0)
data.head()

plt.scatter(x = data['ExpecVida'],
        y = data['PIBperCapita'],
        s = data['PopX1000'],
        cmap=cm.viridis)

plt.show()
在Spyder上运行此代码时,不会返回任何错误。然而,结果是:

一切都是默认的蓝色。
有人知道我做错了什么吗?

如文档中所述:

cmap:Colormap,可选,默认值:无

Colormap实例或注册的Colormap名称仅当c是浮点数组时才使用cmap。如果没有,则默认为rc image.cmap

因此,添加参数c:

# Create dummy data:
data = pd.DataFrame(np.random.rand(10,3), columns=['ExpecVida', 'PIBperCapita', 'PopX1000'])

plt.scatter(x=data['ExpecVida'],
            y=data['PIBperCapita'],
            s=data['PopX1000']*1000,
            c=data['PopX1000'],
            cmap=cm.viridis)


(注意,我只将s乘以1000,这样点就不会小得离谱,因为我的数据只是0-1范围内的随机数)

如文档中所述:

cmap:Colormap,可选,默认值:无

Colormap实例或注册的Colormap名称仅当c是浮点数组时才使用cmap。如果没有,则默认为rc image.cmap

因此,添加参数c:

# Create dummy data:
data = pd.DataFrame(np.random.rand(10,3), columns=['ExpecVida', 'PIBperCapita', 'PopX1000'])

plt.scatter(x=data['ExpecVida'],
            y=data['PIBperCapita'],
            s=data['PopX1000']*1000,
            c=data['PopX1000'],
            cmap=cm.viridis)

(注意,我只将s乘以1000,这样点就不会小得离谱,因为我的数据是0-1范围内的随机数)