気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
散布図ですか。
matplotlibのAxes3D.scatter
の場合、データを
X | Y | Z |
---|---|---|
x0 | y0 | z0 |
x1 | y1 | z1 |
x2 | y2 | z2 |
x3 | y3 | z3 |
のように並べて置く必要がありますので、データの変換が必要となります。
Python
1import pandas as pd 2from mpl_toolkits.mplot3d import Axes3D 3import matplotlib.pyplot as plt 4 5# テストデータ 6df = pd.DataFrame([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]], 7 index=[1,2,3,4], 8 columns=[10,20,30,40]) 9# 10 20 30 40 10#1 1 2 3 4 11#2 2 3 4 5 12#3 3 4 5 6 13#4 4 5 6 7 14 15df.index.name = 'X' 16df.columns.name = 'Y' 17tmp = df.stack().rename('Z').reset_index() 18# X Y Z 19#0 1 10 1 20#1 1 20 2 21#2 1 30 3 22#3 1 40 4 23#4 2 10 2 24#5 2 20 3 25#6 2 30 4 26#7 2 40 5 27#8 3 10 3 28#9 3 20 4 29#10 3 30 5 30#11 3 40 6 31#12 4 10 4 32#13 4 20 5 33#14 4 30 6 34#15 4 40 7 35 36ax = plt.subplot(projection='3d') 37ax.scatter(tmp.X, tmp.Y, tmp.Z) 38plt.show()
ちなみに、サーフェースやワイヤーフレームなどを描画する際には質問のようなフォーマットのデータをそのまま使う事ができます。
Python
1import pandas as pd 2from mpl_toolkits.mplot3d import Axes3D 3import matplotlib.pyplot as plt 4import numpy as np 5 6df = pd.DataFrame([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]], 7 index=[1,2,3,4], 8 columns=[10,20,30,40]) 9 10X,Y = np.meshgrid(df.index, df.columns) 11ax = plt.subplot(projection='3d') 12ax.plot_surface(X, Y, df.values.T) 13plt.show()
投稿2020/04/17 06:31
総合スコア15898
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。