我从一些计算中得到了以下数据:
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
我想用 matplotlib 准备一种 2D 图,像素为 100x100,其中每个像素都有一种颜色(彩虹色从红色到紫色,从第三列的最小值到最大值)第三列的值,并从此文件中读取数据。我想知道使用 matplotlib 的最佳方法是什么
最佳答案
根据 x,y,temp 三元组的排序方式(按行列出),您可以重新调整“temp”列的形状。
例如
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 中为您之前的问题展示了一个示例。
关于python - 使用 matplotlib 制作 2D 像素图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323737/