我在python中有下一个代码用MatPlotLib生成一个3D图形,但我需要你的帮助才能更改我的代码,以便能够创建一个热图而不是3D图。
我的实际代码:
数据来源 - > data.dat包含:
(第一列是'x', 第二列是'y' 第三列是'z')
0.00 0.00 0.38
1.11 0.00 0.38
.
.
.
95.00 1.80 0.38
.
.
.
此文件有3231个类似的行... 代码:
**f_name='/home/data.dat'
data=np.loadtxt(f_name, delimiter='\t', unpack=True)
datos=np.array(data.tolist())
x = datos[0,:]
y = datos[1,:]
z = datos[2,:]
xi = np.linspace(min(x), max(x))
yi = np.linspace(min(y), max(y))
X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi)
Z[np.isnan(Z)] = 0
fig = plt.figure()
ax = Axes3D(fig)
surf= ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet_r , linewidth=1, antialiased=True)
ax.set_zlim(-25, 25)
ax.set_xlim(0, 100)
ax.set_ylim(0, 102)
#more resolution:
start_x, end_x = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(start_x, end_x, 0.25))
ax.xaxis.set_major_formatter(FormatStrFormatter('%0.1f'))
start_y, end_y = ax.get_ylim()
ax.yaxis.set_ticks(np.arange(start_y, end_y, 0.25))
ax.yaxis.set_major_formatter(FormatStrFormatter('%0.1f'))
#ColorBar:
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Figure')
fig.savefig(pathfilename, dpi=300)**
所以...我希望使用相同的数据源生成热图,当'z'列是颜色深度时,也可以增加X,Y分辨率,就像在这个3D图中一样。
你能帮帮我吗? 其他热点这个站点中的示例是很好的参考,但我不清楚我在使用我的数据源(data.dat)的实际代码中需要做些什么更改。大部分时间,此代码将脱机执行。
我更喜欢像MatPlotLib这样的免费图书馆或其他你知道的免费解决方案。
非常感谢!!!