Python 使用matplotlib在热图中绘制x、y和数据
使用matplotlib在二维热图中绘制数据时遇到一些问题 代码如下:Python 使用matplotlib在热图中绘制x、y和数据,python,arrays,numpy,matplotlib,plot,Python,Arrays,Numpy,Matplotlib,Plot,使用matplotlib在二维热图中绘制数据时遇到一些问题 代码如下: from ugtm import eGTM import numpy as np from sklearn import preprocessing import matplotlib.pyplot as plt from scipy.interpolate import griddata X_train = np.random.randn(100, 50) X_test = np.random.randn(50, 5
from ugtm import eGTM
import numpy as np
from sklearn import preprocessing
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
X_train = np.random.randn(100, 50)
X_test = np.random.randn(50, 50)
gtm = eGTM().fit(X_train)
responsibilities = gtm.optimizedModel.matR
nodes_cumulated_responsibilities = preprocessing.MinMaxScaler().fit_transform(np.sum(gtm.optimizedModel.matR,0).reshape(-1,1))
nodes_coordinates = gtm.optimizedModel.matX
transformed = eGTM().fit(X_train).transform(X_test)
Z, xedges, yedges = np.histogram2d(nodes_coordinates[:,0], nodes_coordinates[:,1],normed=True,
bins=15,weights=nodes_cumulated_responsibilities[:,0])
plt.figure()
plt.pcolormesh(xedges, yedges,Z.T,cmap='bone_r')
plt.scatter(transformed[:,0],transformed[:,1],color='r')
plt.title('np.hist2d')
我有“nodes_坐标”数组形状(256,2),它表示节点的坐标x,y。然后我有“nodes\u cumulated\u responsibility”数组形状(256,1),表示各个x,y坐标中每个节点的值。我还有一个“转换”的数组形状(50,2),代表50个细胞,它们“X_测试”由eGTM在热图中命中
接下来,我想以节点坐标和节点累积责任为背景制作一张热图,然后在此图中绘制热图上“X_测试”命中节点的散点图
但我希望散点图位于任何X_序列或任何X_测试的节点中心。。这就是我不知道该怎么做的
此代码的一些要点:
对于任何大小的X_test,映射的大小默认为16x16,但它可以设置为任何整数,因此映射可以是任何nxn
plt.pcolormesh需要np.historogram2d来获得添加了边的网格。但我不喜欢使用np.historogram2d,因为我需要通过“bins”参数来正确调整热图,我怀疑这可能会导致我找到一些错误的地图或散射
对于热图,np.meshgrid为我提供了一个meshgrid,但是没有边,所以我不能将其与pcolormesh一起使用
使用plt.imshow使用np.meshgrid绘制热图的方法似乎更可靠。但我不知道如何将一维数组“节点累积责任”转换为256x256数组
我想做的一个非常类似的例子是:
我将使用
plt.imshow
,对于您提到的最后一点,使用重塑
可以解决问题吗?另外,请在示例代码中使用一些玩具数据,这使得其他易于帮助您:)