0

一定半径の球座標で定義された関数があります。(つまり、2D 配列)

omega1, dx = np.linspace(0, np.pi, 100, retstep=True)
psi1, dpsi = np.linspace(0, 2 * np.pi, 100, retstep=True)

omega, psi = np.meshgrid(omega1, psi1)

torus = PHI(21.5, omega, psi)

私の目的は、これを球に正しくプロットすることです。plotly を使用することを考えましたが、コンピューターが新しすぎるか、内部の問題のために使用できず、次のエラーが表示されます。

エラー:root:GLX コンテキストを作成できません。中止しています。

とにかく、私は次の例に従って Cartopy ライブラリに落ち着きました: Python で 3D 球上に円筒状の地図データをプロットする

ここに私のコード:

plt.figure(figsize=(3, 3))

ax = plt.axes(projection=ccrs.Orthographic(0, 0))
ax.gridlines(crs=ccrs.PlateCarree(),linestyle='dotted',draw_labels=True,
                      linewidth=2, color='gray', alpha=0.5)
gl=ax.imshow(torus, origin="upper", extent=(-180, 180, -90, 90),
              transform=ccrs.PlateCarree())
gl.xlocator = mticker.FixedLocator([-180, -45, 0, 45, 180])
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style = {'size': 15, 'color': 'gray'}
gl.xlabel_style = {'color': 'red', 'weight': 'bold'}

plt.show()

私はこのイメージを得る。

ここに画像の説明を入力

ただし、Cartopy の説明を読んでも解決できない質問がいくつかあります。これを明確にしてください。まず、画像の緯度と経度が目的の緯度と経度に対応していることを確認するにはどうすればよいですか? それは範囲パラメーターにあると思いますが、行間をたどって置くと:

extent=(0, 360, 0, 180)

もうわかりません。2 つ目の質問は、どのラベルが表示されているかを確認する方法です。たとえば、私の画像では緯度が表示されていますが、たとえば経度を取得するにはどうすればよいですか? このタイプのプロットの伝説がどのように機能するかを理解するのは難しいと思います.

もちろん、この種のものを取得するための他のライブラリがあれば、私は興味があります。

4

0 に答える 0