我从一些计算中得到了以下数据:
x, y, temp
其中x和y是尺寸为10x10的2D框中点的坐标。间距等于0.1。所以有10000个不同的点,结果文件如下:
0.0 0.0 5.6
0.1 0.0 3.2
0.2 0.0 4.1
...
9.9 9.9 2.1
我想用100p100像素的matplotlib准备一种2D绘图,其中每个像素获得一种颜色(彩虹颜色从红色到紫色,从第三列的最小值到最大值)根据第3列的值,从该文件中读取数据。我想知道使用matplotlib
的最佳方法是什么答案 0 :(得分:29)
根据你的x,y,temp三元组的排序方式(在行中列出),你可以重塑“temp”列。
E.g。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x,y,temp = np.loadtxt('data.txt').T #Transposed for easier unpacking
nrows, ncols = 100, 100
grid = temp.reshape((nrows, ncols))
plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min()),
interpolation='nearest', cmap=cm.gist_rainbow)
plt.show()
编辑:您可能真的想要hsv
是您所指的“彩虹”色彩映射。matplotlib.cm.gist_rainbow
。 matplotlib.cm.hsv
在底部变回红色。请参阅此处:https://matplotlib.org/users/colormaps.html以获取色彩映射列表。
如果你的x,y,temp三联体实际上没有订购,那么你需要重新计算你的积分。我在前一个问题的my answer中展示了这个例子。