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

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

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

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

479閲覧

テキストファイルの繰り返し読み込み,散布図の生成

beginner_py3

総合スコア4

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2023/01/22 00:22

編集2023/01/22 01:01

前提

質問ばかりになってしまい、申し訳ありませんが再度投稿させていただきます。
大量のテキストファイルから数値データを読み込み、一つの図(散布図)に出力したいです。
データ数は100行の2000個のテキストファイルです。

始点と終点はマーカーを+で出力
軌跡は*で出力できればそのコードの書き方も教えていただければと思います。

data_1.txt の内容(一部)
-2.00000000 -2.00000000 5.00000000 ←始点
-0.63565244 0.05949433 0.96218228
-0.40387173 0.14428492 0.94172740
-0.28732106 0.16607689 0.95228261
-0.21696430 0.16085584 0.96510002
...
-0.00010914 0.00266962 0.99999971 ←終点

実現したいこと

大量のテキストファイルからデータを読み込み、散布図にして始点終点、軌跡を散布図にまとめて出力したいです。
散布図は
figure1:始点-終点のみのものと、
figure2:始点から終点までの全ての数値を用いた軌跡を描いたものを生成したいです。

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

一つのファイルを読み込んで、それぞれのデータをもとに散布図を作成することはできました。
複数あるテキストファイルを同様に読み込んで、一つの散布図にまとめて出力する方法がわかりません。

そのため、同様の処理(読み込み・散布図の生成)を複数回繰り返す処理とまとめて一枚に出力する方法を教えていただきたいです。

該当のソースコード

Python

1import numpy as np 2import matplotlib.pyplot as plt 3 4##for i in range(1,2000)://繰り返しの試し書き 5 6data1_z,data_y,data_x = np.loadtxt("/content/data_1.txt",unpack=True) 7 8#確認用の出力# 9print(data1_b) 10print(data1_c) 11 12#図の生成# 13plt.scatter(data1_x,data1_y,marker='+') 14plt.show()

試したこと

for文を使用して繰り返し処理をしようとしてしましたが、正しい書き方が分からず悩んでいます。
data1_z,data_y,data_x = np.loadtxt("/content/data_{}.txt".format(i),unpack=True)

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

Google Colaboratory

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

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

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

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

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

y_waiwai

2023/01/22 00:46

> テキストファイルの繰り返し読み込み の方は実装できているんでしょうか
beginner_py3

2023/01/22 00:59

テキストファイルはまだ一つしか読み込みしか実装できておりません。 わかりづらくて申し訳ありません。修正いたします。
guest

回答1

0

ベストアンサー

基本的にはファイル(軌跡)毎のループの中でscatterして最後にplotすればよいです。
以下では軌跡毎に異なる色かつ始点、終点のみoで描画しています。
参考:Setting different color for each series in scatter plot on matplotlib

Python

1import numpy as np 2import matplotlib.pyplot as plt 3import matplotlib.cm as cm 4from io import StringIO 5 6# テストデータ 7files = ['-1 1 2\n-2 2 3\n-3 3 4','-4 4 5\n-5 5 6\n-6 6 7'] 8 9colors = cm.rainbow(np.linspace(0, 1, len(files))) 10 11for i in range(len(files)): 12 z,y,x = np.loadtxt(StringIO(files[i]),unpack=True) 13 c = colors[i] # 軌跡の色 14 plt.scatter(x,y,marker='+',color=c) 15 # 始点と終点は異なるマーカーで上書き 16 for pos in [0,-1]: 17 plt.scatter(x[pos], y[pos], marker='o',color=c) 18 19plt.show()

イメージ説明

投稿2023/01/22 01:40

can110

総合スコア38262

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

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

beginner_py3

2023/01/22 02:52

ありがとうございます。参考にさせて頂こうと思います。 追加での質問となってしまいますが、繰り返し処理(data1~data10)までの10個のテキストファイルを繰り返し読み込む・図示するとなればどのように記述すれば良いのでしょうか? 説明されていたように、data1~data10までデータ毎でscatterしてからまとめてplt.show()でplotするのは理解できております。 お答えいただければ幸いです。
can110

2023/01/22 03:15

具体的に何が分からないのかが分からないのですが ループ中でdata1~data10といったファイル名のつくりかたが分からないという事であれば 「f'data{i+1}'」といった感じでできます(Pythonの初歩の知識です)
beginner_py3

2023/01/22 05:58

Python初学者なのでわかりにく質問をしてしまい、申し訳ありません。 data1.txt~data2000.txtの2000個のファイルを繰り返し読み込んで、一つの散布図に落としたいので data1~data2000.txtの2000個を扱う場合はどのように記述すれば良いのかということがお聞きしたかったです。
can110

2023/01/22 06:03

繰り返しになりますが、そのやりたいことのうち「具体的に」どの部分が分からないのでしょうか?
beginner_py3

2023/01/22 06:25

何度も分かりにくくて申し訳ありません。 教えていただいたコードはテストデータとしてあらかじめ記述されていたものですが、 自分のように1~2000までのテキストデータを繰り返し読み込みを行う場合はどのように記述すれば良いのでしょうか。 自分の試し書きになりますが for i in range(1,2000): z,y,x = np.loadtxt("data{}.txt".format(i),unpack=True) 自分のこのような書き方でもdata1~2000.txtを繰り返し読み込みはできるのでしょうか?
can110

2023/01/22 08:46

できるかどうかは「やってみれば」明らかだと思ったのですが、いかがお考えでしょうか?
beginner_py3

2023/01/22 17:03

実際に試してみましたが、OSErrorとエラーになって動きませんでした。 どのようにすれば良いか調べてやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問