我有三个列文件,500万行。就像
x,y,z
3,4,6.7
9,4,7.8
X和y是像素数,z是(x,y)
的对应值
如何绘制热图?
2D图是我原始思想的妥协
你可以查看我的原帖
How to use griddata from scipy.interpolate
我尝试了下面的方法,但它只是一个散点图。
import numpy as np
import pylab as pl
x,y,z =np.loadtxt('3columns.csv',delimiter=',',usecols=(0,1,2),unpack=True)
pl.scatter(x, y, c=z)
pl.show()
答案 0 :(得分:0)
我遇到过类似的问题。我所做的是设置一个数组Z[row[0]][row[1]] = row[2]
。
import numpy as np
x,y,z =np.loadtxt('3columns.csv',delimiter=',',usecols=(0,1,2),unpack=True)
nx = x.max() - x.min() + 1
ny = y.max() - y.min() + 1
Z = np.zeros((nx,ny))
assert x.shape == y.shape == z.shape
for i in range(len(x)):
Z[x[i]-x.min()][y[i]-y.min()] = z[i]
import matplotlib.pyplot as plt
fig = plt.figure()
figure_name = 'figure_name'
plt.pcolor(np.arange(nx),np.arange(ny),Z,cmap=plt.cm.Reds)
plt.colorbar()
plt.xlim(0,x.max()-x.min())
plt.ylim(0,y.max()-y.min())
xlabels = np.arange(x.min(),x.max(),Nspacingx) # define Nspacing accordingly
ylabels = np.arange(y.min(),y.max(),Nspacingy)
plt.xticks(np.arange(0,x.max()-x.min(),Nspacingx),xlabels)
plt.yticks(np.arange(0,y.max()-y.min(),Nspacingy),ylabels)
plt.savefig(figure_name,dpi=400)
通过这种方式,您可以绘制3列数据文件中的2D热图。