繁体   English   中英

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

[英]Changing color of a python scatter plot based on the value at corresponding points of a separate array

这是一个非常复杂的问题,因此我将看看是否可以以一种有意义的方式提出。

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

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

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

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

并以这种方式设置,以便扫描二维数组中的每个对应位置。 分析数据后,脚本将使用两个计算后的值填充具有相同维的两个二维数组,我将分别称为x和y。

新的二维数组的每个对应的索引都绘制在散点图中。

现在,我尝试根据另一个2-d数组的相应点中的数字值来更改某些点的颜色,而不是所有点的颜色。 例如,用伪代码:

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

由于散点图不是使用for循环创建的,因此我不确定如何实现此目的。

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点创建颜色和大小的映射。 您需要根据需要设置颜色。 您可以通过使用此链接引用其他链接来更改颜色映射

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM