質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7905閲覧

Python 3D 直方体のプロットができない

minhouse10

総合スコア41

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/15 15:34

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

実行結果
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ただ単に上の直方体を書くんであれば、

python

1import matplotlib.pyplot as plt 2from mpl_toolkits.mplot3d import Axes3D 3import numpy as np 4 5fig = plt.figure() 6ax = Axes3D(fig) 7ax.set_xlim([0,150]) 8ax.set_ylim([0,800]) 9ax.set_zlim([0,7.0]) 10ax.bar3d( 0, 0, 0, 90 , 400, 2.4, color ="blue") 11plt.show() 12

ちゃんとデータをとって書くのであれば、

python

1import matplotlib.pyplot as plt 2from mpl_toolkits.mplot3d import Axes3D 3import numpy as np 4 5x_list = [i for i in range(0,91)] 6y_list = [i for i in range(0,401)] 7Z = np.zeros([91, 401]) + 2.4 8 9fig = plt.figure() 10ax = Axes3D(fig)#, rect=(0.1,0.1,0.8,0.8)) 11X,Y = np.meshgrid(x_list, y_list) 12ax.set_xlim([0,150]) 13ax.set_ylim([0,800]) 14ax.set_zlim([0,7.0]) 15ax.bar3d( X.ravel(), Y.ravel(), 0, 1 , 1, Z.ravel(), color ="blue") 16plt.show()

イメージ説明

投稿2018/08/06 09:37

Fallout_18

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minhouse10

2018/08/06 12:34

Quantum_walker様、ご回答頂き本当にありがとうございます! 実際にシェア頂いたコードを自分の環境でも実行してみました。とてもきれいにグラフが出て感動しました。 初の3Dグラフ挑戦でしたが、これから頑張って自分の力で書けるように精進致します。とても勉強になりました!改めてありがとうとうございました!
Fallout_18

2018/08/06 12:53

こちらこそ! 追記ですが、上の一つ目のコードは、一つの値で直方体を描いており、 2つ目のコードは400*90個の高さ2.4の棒グラフの集合で直方体を描いています。 この意味はおそらくpythonをこれからやっていくと理解していくでしょう。 僕も今年の3月からpythonを始めたばかりでこのサイトには何度も助けられたので、お互い頑張りましょう!投げやりな質問をすると炎上します。一度teratailのルールは読んどいたほうが良いです。
minhouse10

2018/08/06 12:59

再度アドバイス頂き、ありがとうとうございます! はい、僕も質問が丸投げにならないように、気を付けたいと思います! 確かに2つ目のコードは実行結果を得るまでに結構2,3分かかりました。xとyの値をループで回している分時間がかかっているのですね。
Fallout_18

2018/08/06 13:17 編集

というよりは、プロットして図を書いているのに時間がかかっていると思います。その解釈が正解なのかもしれませんが。
minhouse10

2018/08/06 14:15

ありがとうございます!確かに仰る通りPythonとは言えこの2つのforループだけで2,3分は少しかかりすぎな感じですね。(当然私のPCのスペックもあるかとは思いますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問