0

我有来自表格中给出的模拟的三列数据集

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 值是一个二维数组,在循环中计算,例如:

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 回答