我正在构建一个简单的散点图,用于从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上运行此代码时,不会返回任何错误。但是,这就是结果:
一切仍然是默认的蓝色。 有谁知道我做错了什么?
答案 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)
(注意我只将s乘以1000,这样点数就不会小得多,因为我的数据只不过是0-1范围内的randoms)