使用matplotlib制作2D像素图

时间:2011-06-12 18:28:06

标签: python grid matplotlib plot pixel

我从一些计算中得到了以下数据:

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

的最佳方法是什么

1 个答案:

答案 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_rainbowmatplotlib.cm.hsv在底部变回红色。请参阅此处:https://matplotlib.org/users/colormaps.html以获取色彩映射列表。

如果你的x,y,temp三联体实际上没有订购,那么你需要重新计算你的积分。我在前一个问题的my answer中展示了这个例子。

enter image description here