2012-02-09 17 views
3

歪んだ円筒を表示できるように2D極座標(3D円柱プロット)のスタックを生成する必要があります。私はすでにmatplotlibをインストールしていて、matplotlibしか持たない他の人に自分のコードを配布したいので、matplotlibを使いたいです。たとえば、2次元アレイがたくさんあるとします。外部パッケージをダウンロードすることなくこれを行うことができますか?ここに私のコードです。Matplotlib/Pythonを使用して極プロットのスタックを作成します

#!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() 

私は10個のより類似した2D極座標を持っており、それらをうまく積み重ねたいと思います。歪んだシリンダーを3Dで視覚化するより良い方法があれば、私は完全に示唆を得ることができます。どんな助けもありがとう。ありがとう!

答えて

5

matplotlibを使用して極座標を積み重ねたい場合は、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() 

enter image description here

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

enter image description here

+0

ありがとうございます!私は極座標からデカルトへの変換を全くしていないと思う。プロットのスタックは素晴らしいようです。 – prrao

+0

簡単な質問です。スタックされたプロットにサーフェスを描画できますか?それは見た目を良くするでしょう – prrao

+0

@prraoはい、探し始めるのが良いのは 'contour3D'でしょう(http://www.scipy.org/Cookbook/Matplotlib/mplot3D参照)。等高線マップのヘルプが必要な場合は、新しい質問をするのが理にかなっています。 – Hooked

関連する問題