三维散点图值的热图(Python)

三维散点图值的热图(Python),python,heatmap,Python,Heatmap,这似乎是一个简单的任务或重复,但请耐心听我说——我搜索了一会儿,没有找到任何简单的答案。 我有一个散点图,我想显示为热图。我的价值观是这样的: { (3, 3): 1.7314, (3,4):-6.99, (4,3):-17.3, (4, 4):-100.0 } 我想显示一个以cell(3,3)开头的矩阵,其亮度为1.7314,等等 我发现了一些问题和答案,这些问题和答案都是关于二维元组的列表(X,Y),每个点(X,Y,Z)的Z值(强度)是由(X,Y)周围出现的次数创建的 我也使用了imsho

这似乎是一个简单的任务或重复,但请耐心听我说——我搜索了一会儿,没有找到任何简单的答案。

我有一个散点图,我想显示为热图。我的价值观是这样的:

{ (3, 3): 1.7314, (3,4):-6.99, (4,3):-17.3, (4, 4):-100.0 }
我想显示一个以cell
(3,3)
开头的矩阵,其亮度为
1.7314
,等等

我发现了一些问题和答案,这些问题和答案都是关于二维元组的列表
(X,Y)
,每个点
(X,Y,Z)
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'
对你的情况很重要。

你评估过matplotlib吗?你说“你放下(3,3)”是什么意思?看看。@Roger
imshow
来自
matplotlib
/
pylab
,罗杰:我想这就是他所说的,当他提到解决方案时,强度是用某个
(x,y)
(在本例中,使用直方图)周围出现的次数来计算的。啊,我找不到的是
范围。谢谢!实际上,在
imshow
的下面有一个使用
extent
的例子。只是你也需要看看源代码:)我想我需要使用interpolation='nearest';'没有人崩溃。嗯。。。你知道如何将
范围
限制在一个固定的范围内吗?我不想显示0.5、1.5等的轴标签。;我只想要我选择的数字。
None
不会崩溃,但是
'None'
会崩溃。也许我们有不同的版本。