这似乎是一个简单的任务或重复,但请耐心等待 - 我已经搜索了一段时间,但没有找到任何简单的答案。
我有一个散点图,我想将其显示为热图。我的值(value)观是这样的:
{ (3, 3): 1.7314, (3,4):-6.99, (4,3):-17.3, (4, 4):-100.0 }
我想显示一个以单元格 (3,3)
开头的矩阵,其亮度为 1.7314
等。
我发现了一些关于您给出二维维元组(X, Y)
列表和Z
值的情况的问题和答案每个点 (x,y,z)
的(强度)由 (x, y)
周围出现的次数创建。
我也使用imshow
来绘制这样的图,但是对于imshow
,你删除了(3,3)
等。所以事情可能会发生奇怪的变化。一种选择是使用 imshow
,然后手动调整轴标签。但我觉得有人之前一定已经解决了这个问题,而没有过多地破解pylab
。
最好的方法是什么?
最佳答案
好的,让我们使用示例数据尝试一个简单的示例:
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
指定限制来控制轴。如果您指定,默认值(如果None
)将为(-0.5, numcols-0.5, -0.5, numrows-0.5)
(左、右、下、上)想要 Y 轴的原点
位于下部。
此外,interpolation='none'
对于您的情况很重要。
关于python - 3 维散点图值的热图 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117691/