Matplotlib的colormap未应用于散点图,不会返回任何错误

时间:2018-05-14 13:50:24

标签: python python-3.x matplotlib

我正在构建一个简单的散点图,用于从xls文件中读取数据。 我不想“手动”设置每个不同值的颜色,而是使用其中一个colormaps matplotlib provides(例如“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上运行此代码时,不会返回任何错误。但是,这就是结果:

Scatter plot with no colormap

一切仍然是默认的蓝色。 有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

如文档here中所述:

  

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

     

Colormap实例或注册的colormap名称。仅当c是浮点数组时才使用 cmap。如果为None,则默认为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)

Graph output

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