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

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回答

412閲覧

数値データから軌跡などの図を作成

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グッド

0クリップ

投稿2023/01/21 03:47

前提

Pythonでテキストファイルに出力された数値データの変化を始点と終点、
始点から終点までの軌跡を二次平面図に出力したいです。
Pythonでプログラミングをするのが初めてなので簡単にできる関数などあると思いますが、
web上での知識しか持っていないのでお手柔らかにお願いします。

実現したいこと

複数のテキストファイルのデータを読み込み、それぞれの終点と始点の抽出と始点から終点までの数値の変化をもとに軌跡を出力する。
サンプルデータを記載しておきます。数値変化は100行の為一部省略させていただきます。data_1~data_2000まであります。
どのデータを図示に使うというと、真ん中、右の列をy,x軸にします。 左の列は出力の関係で表示されていますが、図には不要です。
それぞれのテキストファイルからx,y座標を取り出して、ひとつの図に出力します。

data_1.txt
-1.0 1.0 2.0  ←始点
-0.99 0.97 1.5
-0.91 0.92 1.2
... ... ...
-0.12 0.10 0.8 ←終点

発生している問題

・まず、データが全て一つのリストに格納されてしまっている。

テキストファイルをすべて読み込むことはfor文の繰り返し処理を1~2000まで繰り返すことで可能なことは理解しています。

抽出したいデータが右と真ん中でx,y軸とそれぞれ抽出する方法がわかりません。
軌跡に関しては一列ごとのデータをリストに格納してx,yそれぞれのリストの要素をそれぞれ図示すれば良いのかなと考えています。
x_data1[],y_data1[]のようなリストを作る

始点、終点はリストのリストの最初と最後の要素で可能かなと考えています。

該当のソースコード

Python

1 2import matplotlib.pyplot as plt 3import numpy as np 4from pathlib import Path 5 6 7def readfiles(): 8 for i in range(1, 2000): 9 yield Path('/content/data_{}.txt'.format(i)).read_text() 10 11data = list(readfiles()) 12 13print(data)

試したこと

まだ試せてはいませんが、コードの1から書き直しを行っていきます。

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

環境は Google Colaboratory です。

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

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

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

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

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

melian

2023/01/21 04:22

2000個のデータの軌跡を1枚の図に表示したい、ということでしょうか?
beginner_py3

2023/01/21 04:32

コメントありがとうございます。 そうです。データの軌跡をまとめて一枚に表示してどのような動きをしているのかを表現したいです。 最終目的としては2000個のデータを始点から終点とその軌跡を図示したものと 始点と終点を図示することが目的です。
guest

回答1

0

ベストアンサー

まず、2000個のグラフを作るのは後にして、1つのデータでグラフを作ってみることを勧めます。

データを扱うには、質問にあるようなリストで持つよりも、pandasのDataFrameを使うといいでしょう。
DataFrameを使えるようになるにはいろいろ勉強が必要ですが、見合う価値があると思います。

以下のサイトに使いかたは書いてありますし、目的のグラフは「プロットする列の指定: 引数x, y」のところを見ると実現できるのではないかと。
https://note.nkmk.me/python-pandas-plot/

投稿2023/01/21 08:09

TakaiY

総合スコア12763

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

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

beginner_py3

2023/01/21 22:39

ありがとうございます。参考にしてみたいと思います。 参考サイトの内容での質問で申し訳ないのですが、参考にして df = pd.read_table('/content/drive/MyDrive/data1.txt', index_col=0) print(df.head()) というように、テキストデータを読み込んだところ先頭から数値データが入っているテキストファイルの2行目からしか読み込めないのですが、先頭一行目のデータも扱うにはどのようにすれば良いのでしょうか?
melian

2023/01/22 01:37

header=None を付けて下さい。 df = pd.read_table('/content/drive/MyDrive/data1.txt', index_col=0, header=None)
TakaiY

2023/01/22 03:19

melianさんの回答にあるとおりです。 pandasは表のデータを読むときに、先頭の行にカラム名がある前提で読み込みます。 読み込むときにカラム名を付けたければ、columns=["w", "x", "y"] などとすればいいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問