![](/img/trans.png)
[英]Changing the size and color of points in a scatter plot using a slider in 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.