2016-08-15 11 views
2

私はPython 3を使用していますが、xとyの2つの変数があります。xは1から5まで、yは0.03から0.7までです。スカラー数を生成する。私は、x軸をx軸、yをy軸とし、色f(x、y)を表すヒートマップ型プロットを作成したいと考えています。これはどうですか?私はヒートマップを使って試しましたが、缶は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

とf(x、y)を表現したいことはz = f(x, y)を言うことができます。ヒートマップのキーは1つの次元のみを表すことができます(通常はz)。

は、2次元プロットするためのメソッドf(x、y)は

を表すことにより、あなたは何を意味するのか、あなたは、3次元のヒートマップが必要になります。

+0

だサンプル出力 enter image description here を要求します寸法 – JLT

+0

@JLTあなたは正しいです。ヒートマップ(x、y、f(x、y))は3次元です。 –

1

あなたは、2Dのグリッド上xyの関数を計算するために2モノ次元ベクトル、xyで始まる場合は、発生する最初の有するポイントnumpy.meshgridを使用して、2Dグリッド述べ。

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

これは、1つだけx値と他の唯一のyの値を(あなたがちょうどあなた自身のために見にXYを印刷する必要が)含まれています...あなたはグリッドを得ることを確認するために何とか驚きです。

これらの2つのグリッドを使用すると、結果のグリッドを計算できますが、これはnumpyufuncs ...を使用した場合にのみ有効です。

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

、あなたの結果をプロットすることができ、最終的に、あなたが使用したいpyplot方法がpcolorあり、そしてあなたは、常にpyplotから、colorbarメソッドを使用する必要がカラーバーを追加するために...

from matplotlib.pyplot import colorbar, pcolor, show 
Z = f(X, Y) 
pcolor(X, Y, Z) 
colorbar() 
show() 
この時点が最終的​​に到達する

は、伝統色は3位を表し、すべての

+0

異なる機能に散布図を使用することもできます。たとえば、 plt.scatter(X、Y、C = Z、アルファ= 0.8、cmap = 'viridis'、マーカー= 's') – JLT

関連する問題