2024-04-26 23:35:40 发布
网友
我有一个二维数组,想把它显示为一个二进制热图。我正在使用以下代码段:
m = np.random.randint(1, 5, (5,5)) plt.imshow(m, cmap='binary')
但是,这样,轴将为0到4。有没有办法把它改成1到5?你知道吗
你可以这样做:
plt.xticks(range(m.shape[1]), range(1, m.shape[1] + 1)) plt.yticks(range(m.shape[0]), range(1, m.shape[0] + 1))
Documentation关于plt.xticks。你知道吗
plt.xticks
编辑
在seaborn的情况下:
seaborn
sns.heatmap(m, cmap='binary', xticklabels=range(1, m.shape[1] + 1), yticklabels=range(1, m.shape[0] + 1))
Documentation关于seaborn.heatmap。你知道吗
seaborn.heatmap
您可以使用绘图函数^{},它允许您指定数据的坐标,而不是imshow。以下是一些示例:
imshow
下面是用于生成上述图像的完整代码:
import matplotlib.pyplot as plt import numpy as np def plotBinary(mmin=1, mmax=5): x = np.arange(mmin-1, mmax+2) cen = (x[:-1] + x[1:])/2 X,Y = np.meshgrid(cen, cen) m = np.random.randint(mmin, mmax+1, X.shape) plt.pcolormesh(X, Y, m, cmap='binary') plotBinary() plt.show() plotBinary(3, 10) plt.show()
pcolormesh
pcolormesh期望X和Y坐标作为网格传递。假设您有x和y坐标的1D列表x和y,您可以调用X,Y = np.mesgrid(x, y)为您生成X和Y坐标网格。这样您就不必担心坐标网格的实际语法,这很好。你知道吗
X
Y
x
y
X,Y = np.mesgrid(x, y)
在上面的plotBinary函数中,cen是框中心的列表。这也是我们的x和y坐标列表,因此通过调用np.meshgrid(cen, cen)和cen作为两个参数来生成所需的坐标网格。你知道吗
plotBinary
cen
np.meshgrid(cen, cen)
你可以这样做:
Documentation关于
plt.xticks
。你知道吗编辑
在
seaborn
的情况下:Documentation关于
seaborn.heatmap
。你知道吗您可以使用绘图函数^{} ,它允许您指定数据的坐标,而不是
imshow
。以下是一些示例:下面是用于生成上述图像的完整代码:
解释
中的坐标pcolormesh
pcolormesh
期望X
和Y
坐标作为网格传递。假设您有x和y坐标的1D列表x
和y
,您可以调用X,Y = np.mesgrid(x, y)
为您生成X
和Y
坐标网格。这样您就不必担心坐标网格的实际语法,这很好。你知道吗在上面的
plotBinary
函数中,cen
是框中心的列表。这也是我们的x
和y
坐标列表,因此通过调用np.meshgrid(cen, cen)
和cen
作为两个参数来生成所需的坐标网格。你知道吗相关问题 更多 >
编程相关推荐