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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3381閲覧

python データフレームから3D散布図を作成したい。

icemanstanding

総合スコア73

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/04/17 05:26

データフレームから3D散布図を作れるのかわかりません。
もし、作れるなら作成方法を教えてください。

詳細は、添付図を参照ください。

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

散布図ですか。
matplotlibのAxes3D.scatterの場合、データを

XYZ
x0y0z0
x1y1z1
x2y2z2
x3y3z3

のように並べて置く必要がありますので、データの変換が必要となります。

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

magichan

総合スコア15898

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問