Создание 2D пиксельного графика с помощью matplotlib - PullRequest
23 голосов
/ 12 июня 2011

Из некоторых расчетов я получил следующие данные:

x, y, temp

где x и y - координаты точки в двумерном окне размером 10x10. Интервал равен 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

Я хотел бы подготовить вид 2D-графика с matplotlib, с размером 100x100 пикселей, где каждый пиксель получает цвет (цвета радуги переходят от красного к фиолетовому, от минимального до максимального значения третьего столбца) в соответствии с значение 3-го столбца, и данные читаются из этого файла. Интересно, что лучше всего подходит для этого с matplotlib

1 Ответ

30 голосов
/ 12 июня 2011

В зависимости от того, как выглядят ваши x, y, временные тройки (перечислены в строках), вы можете просто изменить форму столбца "temp".

* 1003 Е.Г. *

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 на самом деле не упорядочены, то вам нужно пересчитать свои очки. Я показал пример этого в моем ответе на ваш предыдущий вопрос.

enter image description here

...