2017-07-03 109 views
1

我现在有一堆的存储阵列xy在(X,Y)点,即我使用的是第三排Kmap着色,使用matplotlib在建cmap选项。Matplotlib:使用颜色表,并使用不同的标记为不同的值

plt.scatter(xy[:, 0], xy[:, 1], s=70, c=Kmap, cmap='bwr') 

这很好。现在,我想要做些额外的事情。在继续使用cmap时,我想根据Kmap值是否大于0,< 0或= 0来使用不同的标记。我该怎么做呢?

注意:我可以想象使用if语句分解点并分别用不同的标记分散绘制它们。但是,我不知道如何对这些值应用连续的cmap

回答

2

分开数据集看起来不错。为了保持色彩的一致性,您可以使用VMIN,散射方法

import matplotlib.pyplot as plt 
import numpy as np 


#generate random data 
xy = np.random.randn(50, 2) 
Kmax = np.random.randn(50) 

#data range 
vmin, vmax = min(Kmax), max(Kmax) 

#split dataset 
Ipos = Kmax >= 0. #positive data (boolean array) 
Ineg = ~Ipos  #negative data (boolean array) 


#plot the two dataset with different markers 
plt.scatter(x = xy[Ipos, 0], y = xy[Ipos, 1], c = Kmax[Ipos], vmin = vmin, vmax = vmax, cmap = "bwr", marker = "s") 
plt.scatter(x = xy[Ineg, 0], y = xy[Ineg, 1], c = Kmax[Ineg], vmin = vmin, vmax = vmax, cmap = "bwr", marker = "o") 

plt.show() 
+0

的VMAX参数那么,它是要设置colourmap的适当限度必要使用vmin'和'vmax'的'。这是我的知识中缺少的。谢谢! – ap21

相关问题