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

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

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

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

Python

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

Q&A

解決済

2回答

1613閲覧

3次元格子点をfor文でプロットしたい.

os-t

総合スコア20

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2020/07/20 05:43

前提・実現したいこと

3次元格子点をfor文でプロットしたい.

発生している問題・エラーメッセージ

格子点が1つ目しか表示されない.

該当のソースコード

Python

1import pandas as pd 2import numpy as np 3 4from mpl_toolkits.mplot3d import Axes3D 5import matplotlib.pyplot as plt 6 7data = pd.read_csv("C:\sample\mesh1.csv", header = None) 8data.columns = ['X', 'Y', 'Z', 'label'] 9data.head() 10 11y0 = data.iloc[0:, 3].values 12 13X = np.copy(data.iloc[0:, 0].values) 14 15Y = np.copy(data.iloc[0:, 1].values) 16 17Z = np.copy(data.iloc[0:, 2].values) 18 19XYZ = data.iloc[0:, [0,1,2]].values 20 21fig = plt.figure() 22ax = Axes3D(fig) 23 24for idx in range(len(np.unique(y0))): 25 ax.scatter(XYZ[idx, 0], XYZ[idx, 1], XYZ[idx, 2], 26 color='black', marker='x', linestyle='None')

csvの内容

[[-3 -3 -3 1]
[-3 -3 -2 1]
[-3 -3 -1 1]
...
[ 3 3 1 1]
[ 3 3 2 1]
[ 3 3 3 1]]
です. [-3, -3, -3]しかプロットされませんでした. 以下がcsvを作成した際のコードです.

lst = [] l = 1 for i in range(-3, 4): for j in range(-3, 4): for k in range(-3, 4): lst.append([i, j, k, l]) with open("C:\sample\mesh1.csv", 'w') as f: writer = csv.writer(f) writer.writerows(lst)

補足情報(ツールのバージョンなど)

anaconda JupiterLab 1.2.6

プロットした図

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

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

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

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

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

meg_

2020/07/20 06:06

len(np.unique(y0))が1になっていませんか?
guest

回答2

0

ベストアンサー

csvデータの点を全て表示したいなら下記となります。

Python

1import pandas as pd 2import numpy as np 3 4from mpl_toolkits.mplot3d import Axes3D 5import matplotlib.pyplot as plt 6 7data = pd.read_csv("mesh1.csv", header = None) 8data.columns = ['X', 'Y', 'Z', 'label'] 9data.head() 10 11y0 = data.iloc[0:, 3].values 12 13X = np.copy(data.iloc[0:, 0].values) 14 15Y = np.copy(data.iloc[0:, 1].values) 16 17Z = np.copy(data.iloc[0:, 2].values) 18 19XYZ = data.iloc[0:, [0,1,2]].values 20 21fig = plt.figure() 22ax = Axes3D(fig) 23 24for idx in range(len(data)): # 変更点 25 ax.scatter(XYZ[idx, 0], XYZ[idx, 1], XYZ[idx, 2], 26 color='black', marker='x', linestyle='None') 27 28plt.show()

イメージ説明

投稿2020/07/20 06:16

meg_

総合スコア10580

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

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

os-t

2020/07/20 06:20

できました. ありがとうございます.
guest

0

y0 = data.iloc[0:, 3].valuesにて~.iloc[0:~としているので先頭1行目しか取得していません。XYZ = ~も同様です。
よって先頭の行しか出力できていません。

投稿2020/07/20 06:05

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問