2015-04-21 6 views
0

У меня есть два массива 1D. Один из которых содержит температуру и другое радиальное расстояние (для каждой соответствующей температуры). Я хочу создать график типа карты тепла, используя эту информацию. Вот где я столкнулся с проблемами: 1. Если я создаю сетку с 2d-сетками, как мне сопоставить радиальное расстояние до каждого? Скажем, радиальное расстояние составляет 5 единиц, как найти все квадраты сетки, которые находятся на расстоянии 5 единиц от центра? 2. Затем, как я сопоставляю каждой температуре свой соответствующий набор точек сетки. Так скажите, что умеренный составляет 20 градусов на радиальном расстоянии 5, как я могу выразить это, поскольку он равен 20 градусам при следующем наборе x, y квадратов сетки?Корреляция радиального расстояния до 2D mgrid на python

Спасибо за любую помощь.

ответ

0

meshgrid - ваш друг здесь. Сначала настроить сетку плюс x и y координат сеток (вы будете иметь два 5 от 5 массивов):

import numpy as np 
x, y = np.meshgrid(np.arange(-2, 3), np.arange(-2, 3)) 
heatmap = 0 * x # easy way to get shape right 

Теперь, поддельные некоторые данные:

r = np.array((0, 0.5, 1.5, 2.5)) # Your radial distance 
T = np.array((100, 90, 70, 40)) # Your temperature at distance 

Overlay данные с внутренней стороны наружу, начиная с середины (при условии, r монотонно возрастает):

r2 = r**2 
xy2 = x**2 + y**2 
for ii in range(r.size): 
    heatmap[np.where(xy2 >= r2[ii])] = T[ii] 

Вот и все. Вот результирующая карта тепла:

array([[ 40, 70, 70, 70, 40], 
     [ 70, 90, 90, 90, 70], 
     [ 70, 90, 100, 90, 70], 
     [ 70, 90, 90, 90, 70], 
     [ 40, 70, 70, 70, 40]]) 
+0

Привет, я попробовал это, используя свои фактические данные. Я должен упомянуть, что мои фактические данные имеют массивы с большим количеством записей (ближе к 2000 или около того). Но в любом случае. Я использую plt.contourf (heatmap), и он создает изображение, которое является только синим квадратом. Могу ли я сделать что-то неправильно? Единственное, что я изменил, это r и T, PROFILER/T - это просто функции от ранее в коде r = PROFILER (1.3.4.3e13) T = PROFILET (1.3.4.3e13) plt.contourf (heatmap, 100) plt.show() – Gabrielle

+0

Кроме того, спасибо, я очень ценю помощь – Gabrielle

+0

@Gabrielle: Вы пытались «поддельные» данные и получали тот же результат, что и я? Я предполагаю, что вы заказываете значения 'r' от низкого до высокого, поэтому, если они рандомизированы, вам нужно будет сделать что-то более сложное, например сортировать два массива. –

 Смежные вопросы

  • Нет связанных вопросов^_^