Python 3D 直方体のプロットができない
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 3,702
python, Matplotlibを使って以下の図の様な直方体のグラフが出力ができないかとトライしております。
現状はいろいろとネットの情報を参照しながら試行錯誤しておりますが、以下のコードの出力結果にあります通り現状の出力結果は目指している形とは大分乖離している状態です。
是非ヒントやアドバイス頂けますと幸いです。
よろしくお願いいたします。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
z = 2.4
x = np.arange(0,90,1)
y = np.arange(0,400000,500)
X, Y = np.meshgrid(x, y)
def func_disk(x, y, z):
return (x*400000)*z
Z = func_disk(X, Y, z)
fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlim(0, 90)
ax.set_ylim(0, 400000)
ax.set_zlim(0, 2000)
ax.plot_wireframe(X, Y, Z, color='Blue')
plt.show()
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
ただ単に上の直方体を書くんであれば、
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlim([0,150])
ax.set_ylim([0,800])
ax.set_zlim([0,7.0])
ax.bar3d( 0, 0, 0, 90 , 400, 2.4, color ="blue")
plt.show()
ちゃんとデータをとって書くのであれば、
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x_list = [i for i in range(0,91)]
y_list = [i for i in range(0,401)]
Z = np.zeros([91, 401]) + 2.4
fig = plt.figure()
ax = Axes3D(fig)#, rect=(0.1,0.1,0.8,0.8))
X,Y = np.meshgrid(x_list, y_list)
ax.set_xlim([0,150])
ax.set_ylim([0,800])
ax.set_zlim([0,7.0])
ax.bar3d( X.ravel(), Y.ravel(), 0, 1 , 1, Z.ravel(), color ="blue")
plt.show()
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/08/06 21:34
実際にシェア頂いたコードを自分の環境でも実行してみました。とてもきれいにグラフが出て感動しました。
初の3Dグラフ挑戦でしたが、これから頑張って自分の力で書けるように精進致します。とても勉強になりました!改めてありがとうとうございました!
2018/08/06 21:53
追記ですが、上の一つ目のコードは、一つの値で直方体を描いており、
2つ目のコードは400*90個の高さ2.4の棒グラフの集合で直方体を描いています。
この意味はおそらくpythonをこれからやっていくと理解していくでしょう。
僕も今年の3月からpythonを始めたばかりでこのサイトには何度も助けられたので、お互い頑張りましょう!投げやりな質問をすると炎上します。一度teratailのルールは読んどいたほうが良いです。
2018/08/06 21:59
はい、僕も質問が丸投げにならないように、気を付けたいと思います!
確かに2つ目のコードは実行結果を得るまでに結構2,3分かかりました。xとyの値をループで回している分時間がかかっているのですね。
2018/08/06 22:05 編集
2018/08/06 23:15