根据单独数组的相应点的值更改python散点图的颜色

时间:2015-07-01 17:16:56

标签: python matplotlib colors scatter

这是一个非常复杂的问题,所以我会看看能否以合理的方式提出这个问题。

背景信息:我正在从一个脚本中获取结果,该脚本通过两个参数扫描(以网格状格式)来检索数据。这两个参数存储在彼此对应的数组中。

例如,它们看起来像这样:

[[10 10 10]
[20 20 20]
[30 30 30]]

[[25 35 40]
[25 35 40]
[25 35 40]]

并以这种方式设置,以便扫描2-d阵列中的每个相应位置。当分析数据时,脚本然后填充两个具有相同尺寸的二维数组和一些计算值,我将分别称为x和y。

新的二维阵列的每个相应索引都在散点图中绘制。

现在我试图根据另一个二维数组的相应点中的数字值来改变某些点的颜色,但不是所有点。例如,在伪代码中:

if value at same location in newArray > 9 and value at same location in newArray < 10:
     change color of point

由于散点图不是用for循环创建的,我不确定如何实现这一点。

1 个答案:

答案 0 :(得分:0)

import matplotlib.pyplot as plt
import matplotlib.colors as colors

colorMap = plt.get_cmap('Spectral')
print(colorMap)
def getColor(v1, v2):
    if v2 < 40 and v2 > 33  : 
        return 0    
    else :
        return 1 / (v1 + v2)

def getSize(v1,v2):
    return 5 * (v1 + v2)

a1 = [[10,10,10],[20,20,20],[30,30,30]]
a2 = [[25,35,40],[20,34,42],[18,32,45]]

zipped = [list(zip(x,y)) for x,y in zip(a1,a2)]
size = [[getSize(m,n) for m,n in zip(x,y)] for x,y in zip(a1,a2)]
color = [[getColor(m,n) for m,n in zip(x,y)] for x,y in zip(a1,a2)]

plt.scatter(a1,a2,size, color, cmap=colorMap)

这将获取两个数组,并在a1,a2点创建颜色和大小的映射。您需要根据需要设置颜色。您可以按using this link to reference others.

更改颜色映射

我希望我走在正确的道路上?