рисовать данные CSV-файла как тепловую карту, используя numpy и matplotlib - PullRequest
0 голосов
/ 25 апреля 2010

Я смог загрузить свой CSV-файл в массив Numpy:

data = np.genfromtxt('csv_file', dtype=None, delimiter=',')

Теперь я хотел бы создать карту тепла. У меня есть 19 категорий из 11 образцов, по этим направлениям:

 COG          station1    station2    station3    station4      
COG0001     0.019393497 0.183122497 0.089911227 0.283250444 0.074110521
COG0002     0.044632051 0.019118032 0.034625785 0.069892277 0.034073709
COG0003     0.033066112 0           0           0           0
COG0004     0.115086472 0.098805295 0.148167492 0.040019101 0.043982814
COG0005     0.064613057 0.03924007  0.105262559 0.076839235 0.031070155 
COG0006     0.079920475 0.188586049 0.123607421 0.27101229  0.274806929 
COG0007     0.051727492 0.066311584 0.080655401 0.027024185 0.059156417     
COG0008     0.126254841 0.108478559 0.139106704 0.056430812 0.099823028

Я хотел использовать matplotlib colormesh, но я в растерянности. все примеры, которые я мог найти, использовали массивы случайных чисел. любая помощь и идеи будут с благодарностью.

1 Ответ

4 голосов
/ 26 апреля 2010

Что я могу расшифровать из вашего вопроса, так это то, что у вас есть массив 11 x 19, и числа, составляющие этот массив, кажутся действительными числами в диапазоне 0 <= x <= 1 (очевидно, что ни одно из предположений не является критическим для ответа) . </p>

Ниже приведен код для создания тепловой карты вашего массива таким образом, чтобы наименьшие значения были светлее, а большие значения - более темными оттенками серого (например, «0» - это белый, а «1» - это черный).

Итак, сначала создайте массив , идентичный по форме и диапазону значений вашему:

import numpy as NP
M = NP.random.rand(209).reshape(11, 19)
M.shape
# returns: (11, 19)
# if the array returned from your call to 'genfromtxt' 
# is not 11 x 19, 
# then you need to reshape it so that it is, 
# use, e.g., 'data.reshape(11, 19)'

from matplotlib import pyplot as PLT
from matplotlib import cm as CM


fig = PLT.figure()
ax1 = fig.add_subplot(111)

gray_r относится к определенной таблице matplotlib - т. Е. Создает справочную таблицу, которая отображает каждое из значений ячейки в двумерном массиве в цвет / оттенок ячейки. (другими словами: карты цветов просто сопоставляют палитру с данными;

r означает только реверс ; Я предпочитаю это сопоставление, потому что оно кажется мне более интуитивным, т. е. белый цвет отображается в 0, а большие значения отображаются в более темные оттенки серого;

доступные цветовые карты находятся в модуле см ; dir (matplotlib.cm) , чтобы получить список установленных цветовых карт (их десятки); Сайт Matplotlib имеет отличное визуальное отображение их (конечно, как набор графиков matplotlib).

# select the color map by calling get_cmap and passing in a registered colormap 
# and an integer value for _lut_ which is just the number of different colors desired
cmap = CM.get_cmap('gray_r', 10)

# map the colors/shades to your data
ax1.imshow(M, interpolation="nearest", cmap=cmap)

# plot it
PLT.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...