0

フォームで与えられたシミュレーションからの 3 つの列データ セットがあります。

x, y, z

次のようになります。

0.0000000E+00  0.000000000000000E+000   1.00000000000000
0.0000000E+00  0.200000002980232        1.00000000000000
0.0000000E+00  0.400000005960464        1.00000000000000
0.0000000E+00  0.600000008940697        1.00000000000000
0.0000000E+00  0.800000011920929        1.00000000000000
0.0000000E+00   1.00000001490116        1.00000000000000

0.1000000      0.000000000000000E+000  0.974332364008348
0.1000000      0.200000002980232       0.974332364008348
0.1000000      0.400000005960464       0.974332364008348
0.1000000      0.600000008940697       0.974332364008348
0.1000000      0.800000011920929       0.974332364008348
0.1000000       1.00000001490116       0.974332364008348

0.2000000      0.000000000000000E+000  0.999148125725412
0.2000000      0.200000002980232       0.999148125725412
0.2000000      0.400000005960464       0.999148125725412
0.2000000      0.600000008940697       0.999148125725412
0.2000000      0.800000011920929       0.999148125725412
0.2000000       1.00000001490116       0.999148125725412

...

XYZ データの 2D カラー マップ プロットを作成したいと思います。ここで、x と y は単なる座標であり、z はそれらの各ポイントの値です。

GNUPLOT では、これはとても簡単にできます:

私が使用する場合

set pm3d map

splot 'datafile.txt'

正しいプロットを取得します。

しかし、今、matplotlib でこれを達成する方法を考えていました。

誰でも私を助けることができますか?

4

1 に答える 1

1

私の X と Y の値は、以下に示すように配列です。

 x_vals = np.linspace(500, 40000, 160)
 y_vals = np.linspace(100, 5000, 50)

私の Z 値は 2D 配列で、次のようなループで計算されます。

z_vals = []
for this_y in y_vals:
    this_z = []
    for this_x in x_vals:
        this_val = gain_for_position(this_x, this_y, val_a, val_b)
        this_z.append(this_val)
    z_vals.append(this_z)

私が持っているプロットは、次のコードで描かれました:

plt.contourf(x_vals, y_vals, z_vals, 8)
contour_labels = plt.contour(x_vals, y_vals,
                             z_vals, 8, colors='black', linewidth=.5)
plt.clabel(contour_labels, inline=1, fontsize=10)

そして、このようなプロットになりました。ここに画像の説明を入力

于 2014-07-22T13:19:27.373 に答える