Make a 2D pixel plot with matplotlib

一曲冷凌霜 提交于 2019-11-26 13:03:31

问题


I got the following data from some calculations:

x, y, temp

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

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


回答1:


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.

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 is the "rainbow" colormap you were referring to. Edit: You probably actually wanted 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.

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.



来源:https://stackoverflow.com/questions/6323737/make-a-2d-pixel-plot-with-matplotlib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!