2016-08-31 4 views
0

Скажем, у меня есть изображение, и у меня есть ограничивающая рамка на части изображения. Как я могу нарисовать круговую карту тепла в этом прямоугольнике?Как нарисовать круговую карту памяти внутри прямоугольника в Python

+0

Не могли бы вы рассказать о том, что вы имеете в виду? Ваш вопрос очень неясен. И почему вы отметили это с помощью [user-experience]? –

+0

Например, у меня есть изображение, и я связал шляпу с изображением с ограничивающей рамкой. Теперь я хотел бы нарисовать круговую карту памяти в этой ограничительной рамке. т. е. центр моей тепловой карты должен быть центром ограничивающей рамки, а цвет моей тепловой карты исчезает, когда радиус увеличивается до тех пор, пока край моей тепловой карты не достигнет ограничивающего прямоугольника. –

+0

Итак, вы хотите нарисовать радиальный градиент цвета по кругу? «Heatmap» действительно означает что-то, связанное с данными, или вы просто хотите каким-то образом перейти от цвета A к цвету B? Понимаете, ваш вопрос тоже очень широк. –

ответ

1

Вам нужно создать в нужном положении новый Axes и использовать полярный pcolor участок, чтобы построить "Heatmap":

import matplotlib.pyplot as plt 
import numpy as np 

fig,ax1 = plt.subplots() 
# plot dummy image 
ax1.imshow(np.random.rand(200,200),cmap='viridis') 

# create new Axes, position is in figure relative coordinates! 
relpos = [0.6, 0.6, 0.2, 0.2] 
ax2 = fig.add_axes(relpos, polar=True) 
ax2.axis('off') 
phi = np.linspace(0,2*np.pi,50) 
r = np.linspace(0,1,50) 
gradient = np.tile(np.linspace(0,1,r.size)[:,None],phi.size) 
ax2.pcolor(gradient,cmap='hot_r') 

Результат:

result

Цвет градиентных выборок линейно из цветовой карты, в приведенном выше примере с именем hot_r. Вы можете играть как с цветовой палитрой, так и с переходом переменной gradient, результат всегда будет радиально зависимым.

Единственное, что вам нужно позаботиться, - это преобразовать ваш прямоугольник (указанный в единицах, которые вы только можете сказать) относительным единицам фигуры (где (0,0) - нижний левый угол фигуры и (1,1) - верхний левый). Осевое позиционирование работает так, как обычно для ящиков в форме коробки: [left,bottom,width,height].

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