gpt4 book ai didi

python - 如何更改 matplotlib matshow 中矩阵某些元素的颜色?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:30 24 4
gpt4 key购买 nike

我有一个二部图(1 和 0)的邻接矩阵以及该矩阵的双簇(行和列数组的数组)。如何使用 matplotlib matshow 为邻接矩阵中属于不同簇的元素(仅 1)设置不同的颜色?

import numpy as np
import matplotlib.pyplot as plt

a_matrix = np.array([[0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 1, 1, 1], [1, 1, 0, 0, 0], [0, 1, 0, 0 ,0]])
cluster_1 = np.array([[1, 2, 3], [3, 4, 5]])
cluster_2 = np.array([[4, 5], [1, 2]])

# plot matrix with one colour
plt.matshow(a_matrix, cmap='Greys', interpolation='nearest')

邻接矩阵、双簇和二部图:

adjacency matrix, bi-clusters, and a bipartite graph

最佳答案

一种方法可能是复制矩阵,然后为您识别的集群提供不同的值。

m = a_matrix.copy()     # a copy we can change without altering the orignal
c = cluster_1 # an alias to save typing

# Naked NumPy doesn't seem to have a cartesian product, so roll our own
for i in range(c.shape[1]):
for j in range(c.shape[1]):
if m[c[0,i]-1,c[1,j]-1]:
m[c[0,i]-1,c[1,j]-1] = 2

plt.matshow(m, cmap='jet', interpolation='nearest')
plt.show()

enter image description here

对于更多簇,请循环上面的内容,为每个簇设置不同的值(并且可以选择或定义更好的颜色图)。我确信笛卡尔积还有更有效的实现......

关于python - 如何更改 matplotlib matshow 中矩阵某些元素的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com