0

このような絵をPythonでプロットしようとしています。

ここに画像の説明を入力

プロット用の 3 つのパラメーターがあります。バツ:

[ 0.03570416  0.05201517  0.05418171  0.01868341  0.07116423  0.07547471]

y:

 [-0.32079484 -0.53330218 -1.02866859 -0.94808545 -0.51682506 -0.26788337]

z:

[-0.32079484 -0.53330218 -1.02866859 -0.94808545 -0.51682506 -0.26788337]

したがって、x は x 軸、y は y 軸です。ただし、z はピクセルの強度です。私はこのコードを思いつきます:

z = np.array(reals)
x = np.array(ra)
y = np.array(dec)
nrows, ncols = 10, 10 
grid = z.reshape((nrows, ncols))
plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min()), interpolation='nearest', cmap=cm.gist_rainbow)
plt.title('This is a phase function')
plt.xlabel('ra')
plt.ylabel('dec')
plt.show()

ただし、次のエラーが表示されます。

grid = z.reshape((nrows, ncols))
ValueError: total size of new array must be unchanged

ra、dec、および reals は、同じサイズの通常の配列です。以前にそれらを計算してから、それらを使用してnumpy配列を作成しました

4

1 に答える 1

1

表示するデータは画像の作成と一致していませんが、それを使用して散布図を作成できます。

(x,y) 座標ペアでの z 値の 2 つの基本的なプロット タイプは次のとおりです。

  1. 散布図。(x,y) ペアごとに Z 値が指定されます。
  2. 画像 (imshow、pcolor、pcolormesh、contour)。ここで、m 個の等間隔の値を持つ x 軸と n 個の等間隔の値を持つ y 軸が指定され、サイズ (m,n) の z 値の配列が指定されます。与えられます。

あなたのデータは以前のタイプに似ているので、散布図を提案しています。

散布図は次のようになります (ところで、y と z の値は同じですが、おそらく間違いです)。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([ 0.03570416, 0.05201517, 0.05418171, 0.01868341, 0.07116423, 0.07547471])
y = np.array([-0.32079484, -0.53330218, -1.02866859, -0.94808545, -0.51682506, -0.26788337])
z = np.array([-0.32079484, -0.53330218, -1.02866859, -0.94808545, -0.51682506, -0.26788337])

plt.scatter(x, y, c=z, s =250)        

plt.show()

ここに画像の説明を入力

于 2013-03-27T15:28:54.830 に答える