4

歪んだ円柱を表示できるように、2D 極座標プロット (3D 円柱プロット) のスタックを生成する必要があります。既にインストールされているため、matplotlib を使用し、matplotlib しか持っていない他のユーザーにコードを配布したいと考えています。たとえば、たくさんの 2 次元配列があるとします。外部パッケージをダウンロードせずにこれを行う方法はありますか? これが私のコードです。

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

A0 = 55.0
offset = 60.0

R = [116.225,115.105,114.697,115.008,115.908,117.184,118.61,119.998,121.224,122.216,\
122.93,123.323,123.343,122.948,122.134,120.963,119.575,118.165,116.941,116.074,115.66\
,115.706,116.154,116.913,117.894,119.029,120.261,121.518,122.684,123.594,124.059,\
123.917,123.096,121.661,119.821,117.894,116.225]

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8],polar=True)     # Polar plot
ax.plot(theta,R,lw=2.5)
ax.set_rmax(1.5*(A0)+offset)
plt.show()

類似の 2D 極座標プロットがさらに 10 個あり、それらをうまく積み上げたいと考えています。歪んだ円柱を 3D で視覚化するためのより良い方法があれば、提案をお待ちしています。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

7

matplotlib を使用して極座標チャートを積み重ねる場合、1 つの方法は Axes3D モジュールを使用することです。最初に極座標を使用し、プロットの準備ができたときにデカルト座標に変換し直したことがわかります。

from numpy import *
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

n = 1000

fig = plt.figure()
ax = fig.gca(projection='3d')

for k in linspace(0, 5, 5):
    THETA = linspace(0, 2*pi, n)
    R     = ones(THETA.shape)*cos(THETA*k)

    # Convert to Cartesian coordinates
    X = R*cos(THETA)
    Y = R*sin(THETA)

    ax.plot(X, Y, k-2)

plt.show()

ここに画像の説明を入力

の最後の引数をいじるとax.plot、各スライスの高さが制御されます。たとえば、すべてのデータを 1 つの軸に投影する場合は、 を使用しますax.plot(X, Y, 0)。よりエキゾチックな例として、データの高さをサドルなどの関数にマップできますax.plot(X, Y, -X**2+Y**2 )。同様に色をいじることで、理論的には複数の 4 次元データセットを表すことができます (ただし、これがどれほど明確かはわかりません)。以下の例:

ここに画像の説明を入力

于 2012-02-09T14:42:39.533 に答える