簡體   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