我用面具做了一个热图。这里是一个玩具MWE:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
images = []
vmin = 0
vmax = 80
cmap = "viridis"
size = 40
matrix = np.random.randint(vmin, vmax, size=(size,size))
np.random.seed(7)
mask = []
for _ in range(size):
prefix_length = np.random.randint(size)
mask.append([False]*prefix_length + [True]*(size-prefix_length))
mask = np.array(mask)
sns.heatmap(matrix, vmin=vmin, vmax=vmax, cmap="viridis", mask=mask)
plt.savefig("temp.png")
plt.show()
我想在面具的边缘画一条线来强调它的位置。你怎么能这么做?
我的玩具示例目前看起来像这样:
3条答案
按热度按时间koaltpgm1#
sns.heatmap
是分类的,每行或每列正方形的中心对应于刻度位置,边缘是± 0.5
。.argmax
查找mask
中True
的第一个示例的索引位置。.vlines
和.hlines
(它们接受一系列值)绘制所有直线。mask
中有不连续的True
和False
值,这可能不起作用。wh6knrhe2#
在边缘周围绘制一条线的示例
pxiryf3j3#
如果您的目标是突出显示一个区域,那么使用蒙版反转的填充方法如何?我的方法是创建一个要填充的颜色数组,并在色彩Map表中指定要填充的颜色。然后您可以隐藏颜色栏。