🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Matplotlib

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

Python

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

Q&A

解決済

1回答

3644閲覧

matplotlibでの3次元の散布図

yu__ya

総合スコア6

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2019/11/15 05:48

編集2019/11/15 06:30

3種類のデータ、4種類のラベルで、120個のデータがあります。
これを三次元の散布図にしたいのですが、120個のデータのうち、最後の30個しかプロットされません。
データは、ラベル0が30個、1が30個、2が30個、3が30個の順です。

python

1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4from mpl_toolkits.mplot3d import axes3d 5pd.options.display.max_rows = 8 6state = np.random.RandomState(0) 7# csv からデータ読み込み 8names = ['red', 'green', 'blue','season'] 9coloer = pd.read_csv('personal_coloer_data_rgb.csv', header=None, names=names) 10df=coloer 11label=df[['season']] 12data=df[['red', 'green', 'blue']] 13 14X=data 15T=label 16 17 18hue = 'season' 19labels = set(df[hue]) 20dataset = [] 21for x in labels: 22 xs = df[df[hue]==x]['red'] 23 ys = df[df[hue]==x]['green'] 24 zs = df[df[hue]==x]['blue'] 25 dataset.append((xs, ys, zs)) 26 27fig = plt.figure() 28 29ax = fig.add_subplot(1, 1, 1, projection='3d') 30for data, label in zip(dataset, labels): 31 ax.scatter(xs, ys, zs, label=label) 32ax.set_title('Matplot 3d scatter plot') # タイトル 33ax.set_xlabel('red') # X軸ラベル 34ax.set_ylabel('green') # Y軸ラベル 35ax.set_zlabel('blue') # Z軸ラベル 36ax.legend(loc=2, title='legend', shadow=True) # 凡例 37 38plt.show()

出力するとイメージ説明
このようになっています

使っているデータは、

red green blue season
0 1 0.99 0.96 0
1 0.98 0.93 0.78 0
2 0.94 0.92 0.87 0



30 0.95 0.91 0.85 1
31 0.7 0.6 0.47 1
32 0.71 0.57 0.32 1



60 0.97 0.97 0.95 2
61 0.6 0.64 0.69 2
62 0.32 0.38 0.48 2



90 1 0.87 0.96 3
91 0.85 0.89 1 3
92 0.92 0.99 0.91 3



119 0.92 0.99 0.91 3


labelのseasonが0~3までそれぞれ30個ずつあります

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

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

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

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

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

hayataka2049

2019/11/15 06:21

この質問内容の場合、データがあった方が回答がつきやすいので、可能であれば personal_coloer_data_rgb.csv をテキスト形式でまるごと掲載してください。
guest

回答1

0

ベストアンサー

patch

1for data, label in zip(dataset, labels): 2 xs, ys, zs = data # この行を追加してください 3 ax.scatter(xs, ys, zs, label=label)

投稿2019/11/15 07:46

hayataka2049

総合スコア30935

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問