前提・実現したいこと
Pythonで
x:0~1を101分割
y:sin(x)
z:cos(x)
をmeshgridを用いて三次元グラフで描画したいのですが,どうすればいいのかわかりません.zがxの値しか参照しないためにうまくいかないという認識であってるでしょうか?
またこの場合,どのようなプログラムを書けば解決できるでしょうか?
(補足)
描画の際は,座標を点ではなく縦線で描画し,最終的にはカーテンのようなグラフにしたいです.
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) <ipython-input-3-91a89f1130d8> in <module> 11 12 X, Y = np.meshgrid(x, y) ---> 13 ax.plot_surface(X, Y, z) 14 plt.show() ~\Anaconda3\envs\zemi_env\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in plot_surface(self, X, Y, Z, norm, vmin, vmax, lightsource, *args, **kwargs) 1554 1555 if Z.ndim != 2: -> 1556 raise ValueError("Argument Z must be 2-dimensional.") 1557 if np.any(np.isnan(Z)): 1558 cbook._warn_external( ValueError: Argument Z must be 2-dimensional.
該当のソースコード
Python
1import numpy as np 2import matplotlib.pyplot as plt 3from mpl_toolkits.mplot3d import Axes3D 4 5x = np.linspace(0, 1, 101) 6y = np.sin(x) 7z = np.cos(x) 8 9fig = plt.figure() 10ax = Axes3D(fig) 11 12X, Y = np.meshgrid(x, y) 13ax.plot_surface(X, Y, z) 14plt.show()
試したこと
単純に散布図として三次元描画する方法はできました.それ以外の,面的なグラフの描画方法を探しています.
補足情報(FW/ツールのバージョンなど)
jupyter notebook(6.3.0)を使用しています.
回答2件
あなたの回答
tips
プレビュー