这似乎是一个简单的任务或重复,但请耐心等待 - 我已经搜索了一会儿,但没有找到任何简单的答案。
我有一个散点图,我希望将其显示为热图。我的价值看起来像这样:
{ (3, 3): 1.7314, (3,4):-6.99, (4,3):-17.3, (4, 4):-100.0 }
我想显示以单元格(3,3)
开头的矩阵,其亮度为1.7314
等。
我找到了几个问题和答案,其中列出了两个维度元组(X, Y)
的列表以及每个点Z
的{{1}}值(强度) } {}由(x,y,z)
周围的出现次数创建。
我还使用(x, y)
来绘制这样的情节,但对于imshow
,你放弃imshow
等等。所以事情可能会奇怪地转移。一种选择是使用(3,3)
,然后手动调整轴标签。但我觉得某人必须先解决这个问题,而不要过多地攻击imshow
。
这样做的最佳方式是什么?
答案 0 :(得分:2)
好的,让我们尝试使用您的示例数据的简单示例:
import numpy as np
from pylab import *
data = { (3, 3): 1.7314, (3,4):-6.99, (4, 3):-17.3, (4, 4):-100.0 }
matrix = np.zeros((5, 5))
for (x, y), z in data.items():
matrix[y,x] = z
imshow(matrix[3:, 3:], origin='lower', interpolation='none', extent=[2.5, 4.5, 2.5, 4.5])
show()
如您所见,您可以使用extent
指定限制来控制轴。如果您指定要在Y轴的下半部分None
,则默认(如果(-0.5, numcols-0.5, -0.5, numrows-0.5)
)将为origin
(左,右,下,上)。
此外,interpolation='none'
对您的情况非常重要。