我从一些计算中得到了以下数据:
I got the following data from some calculations:
x, y, temp
其中 x 和 y 是尺寸为 10x10 的 2D 盒子中的点的坐标.间距等于 0.1.所以有 10000 个不同的点,生成的文件如下所示:
where x and y are the coordinates of a point in a 2D box of dimensions 10x10. Spacing is equal to 0.1. So there are 10000 different points and the resulting file looks like:
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 的最佳方法是什么
I would like to prepare kind of a 2D plot with matplotlib, with 100x100 pixels, where each pixel gets a colour (rainbow colors going from red to violet, from the minimum to the maximum values of the third column) according to the value of the 3rd column, and data is read from this file. I wonder what is the best approach for this with matplotlib
根据 x,y,temp 三元组的排序方式(按行列出),您可以重塑temp"列.
Based on the way it looks like your x,y,temp triples are ordered (listed out in rows), you can just reshape the "temp" column.
例如
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 获取颜色图列表.
You probably actually wanted hsv
is the "rainbow" colormap you were referring to.matplotlib.cm.gist_rainbow
. matplotlib.cm.hsv
goes back to red at the bottom. See here: https://matplotlib.org/users/colormaps.html for a list of colormaps.
如果您的 x,y,temp 三元组实际上没有被排序,那么您需要重新计算您的分数.我在我的回答中展示了一个例子.
If your x,y,temp triplets aren't actually ordered, then you'll need to regrid your points. I showed an example of this in my answer to your previous question.
这篇关于使用 matplotlib 制作 2D 像素图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!