2016-08-15 2 views
2

Я нахожусь на python 3, и у меня есть две переменные x и y, где x находится в диапазоне от 1 до 5 и y от 0,03 до 0,7, а затем у меня есть метод, который принимает x и y и генерирует скалярное число. Я хочу создать график типа тепловой карты с x в качестве оси x и y в качестве оси y и цветовой ключ для представления метода f (x, y). Как это делается? Я пробовал использовать Heatmaps, но cans, похоже, заставляют его работать из-за того, что диапазоны не могут получить приемлемые диапазоны x и y. Вот пример, который я нашел, и это близко к тому, что я ищуПостроение 2 переменных с тепловой диаграммой

import numpy as np 
import numpy.random 
import matplotlib.pyplot as plt 


x = np.random.randn(8873) 
y = np.random.randn(8873) 

heatmap, xedges, yedges = np.histogram2d(x, y, bins=50) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 

plt.clf() 
plt.imshow(heatmap, extent=extent) 
plt.show() 

Но я хочу цвет, чтобы представить Р (х, у) с ключом

ответ

0

Позволяет сказать z = f(x, y). Ключ вашей тепловой карты может представлять только один размер (обычно это будет z). Что вы имеете в виду

представляет метод f (х, у)

Для 2-мерного черчения, вам потребуется 3-мерная Heatmap.

+0

цвета представляет собой 3-й размер – JLT

+0

@JLT вы правы. 'heatmap (x, y, f (x, y))' является трехмерным. –

1

Если начать с 2 моно-мерных векторов, x и y вычислить функцию x и y на сетке 2D точек вы должны сначала генерировать сказал 2D сетки, используя numpy.meshgrid.

from numpy import linspace, meshgrid 
x, y = linspace(1, 5, 41), linspace(0.03, 0.70, 68) 
X, Y = meshgrid(x, y) 

Это как-то удивительно видеть, что вы получите две сетки ... одна содержит только x значения, а другой только y значения (вы должны просто напечатать X и Y, чтобы увидеть для себя) ,

С помощью этих двух доступных сеток вы можете вычислить сетку результатов, но это работает только при использовании ufuncs ... например.

def f(x, y): 
    from numpy import sin, sqrt 
    return sin(sqrt(x*x+y*y)) 

и в конечном итоге вы можете построить свои результаты, то pyplot метод, который вы хотите использовать pcolor, и добавить Colorbar вы должны использовать, всегда из pyplot, метод colorbar ...

from matplotlib.pyplot import colorbar, pcolor, show 
Z = f(X, Y) 
pcolor(X, Y, Z) 
colorbar() 
show() 

Когда эта точка в конце концов достигнута, традиции просит выход образца enter image description here это все

+0

Обратите внимание, что вы также можете использовать график рассеяния для различных функций: например: plt.scatter (X, Y, c = Z, alpha = 0.8, cmap = 'viridis', marker = 's') – JLT

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