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

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

詳細はこちら
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Matplotlib

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

3回答

5873閲覧

python txtファイルから読み込んでグラフ表示がしたい

11390

総合スコア20

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Matplotlib

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/09/20 08:39

編集2019/09/20 08:52

前提・実現したいこと

txt形式で保存している実験計測データ(x,y,z)をpythonのプログラミングによって2Dカラーマップ表示で可視化させたい.
txtファイルを読み込んでそのファイルからイメージを表示させたいです.
(特にtxtファイルにこだわっているわけではありません)

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

エラーメッセージ

該当のソースコード

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

fig = plt.figure()
ax = fig.gca(projection='3d')

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X2 + Y2)
Z = np.sin(R)

surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
linewidth=0, antialiased=False)

ax.set_zlim(7, 22)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

試したこと

自分なりにいろいろと調べましたが,よく分からなかったです.上記のプログラムは,自分がやりたいことと似ていたので載せました.

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

下がtxtファイルです7703行あります
X6.785Y0.000Z-21.498
X6.786Y0.000Z-21.498
X6.787Y0.000Z-21.498
X6.788Y0.000Z-21.498
X6.789Y0.000Z-21.498
X6.790Y0.000Z-21.498
X6.791Y0.000Z-21.498
X6.792Y0.000Z-21.498
X6.793Y0.000Z-21.498
X6.794Y0.000Z-21.498
X6.795Y0.000Z-21.498
X6.796Y0.000Z-21.498
X6.797Y0.000Z-21.498
X6.798Y0.000Z-21.498
X6.799Y0.000Z-21.498
X6.800Y0.000Z-21.498
X6.801Y0.000Z-21.498
X6.802Y0.000Z-21.498
X6.803Y0.000Z-21.498
X6.804Y0.000Z-21.498
X6.805Y0.000Z-21.498
X6.806Y0.000Z-21.498
X6.807Y0.000Z-21.498
X6.808Y0.000Z-21.498
X6.809Y0.000Z-21.498
X6.810Y0.000Z-21.498
X6.811Y0.000Z-21.498
X6.812Y0.000Z-21.498
X6.813Y0.000Z-21.498
X6.814Y0.000Z-21.498
X6.815Y0.000Z-21.498
X6.816Y0.000Z-21.498
X6.817Y0.000Z-21.499
X6.818Y0.000Z-21.499
X6.819Y0.000Z-21.499
X6.820Y0.000Z-21.499
X6.821Y0.000Z-21.499
X6.822Y0.000Z-21.499
X6.823Y0.000Z-21.499
X6.824Y0.000Z-21.499
X6.825Y0.000Z-21.499
X6.826Y0.000Z-21.498
X6.827Y0.000Z-21.498
X6.828Y0.000Z-21.498
X6.829Y0.000Z-21.498
X6.830Y0.000Z-21.498
X6.831Y0.000Z-21.498
X6.832Y0.000Z-21.498
X6.833Y0.000Z-21.498
X6.834Y0.000Z-21.498
X6.835Y0.000Z-21.498
X6.836Y0.000Z-21.498
X6.837Y0.000Z-21.498
X6.838Y0.000Z-21.498
X6.839Y0.000Z-21.498
X6.840Y0.000Z-21.498
X6.841Y0.000Z-21.498
X6.842Y0.000Z-21.498
X6.843Y0.000Z-21.498
X6.844Y0.000Z-21.498
X6.845Y0.000Z-21.498
X6.846Y0.000Z-21.498
X6.847Y0.000Z-21.498
X6.848Y0.000Z-21.498
X6.849Y0.000Z-21.498
X6.850Y0.000Z-21.498
X6.851Y0.000Z-21.498
X6.852Y0.000Z-21.498
X6.853Y0.000Z-21.498
X6.854Y0.000Z-21.498
X6.855Y0.000Z-21.498
X6.856Y0.000Z-21.498
X6.857Y0.000Z-21.498
X6.858Y0.000Z-21.498
X6.859Y0.000Z-21.498
X6.860Y0.000Z-21.498
X6.861Y0.000Z-21.498
X6.862Y0.000Z-21.498
X6.863Y0.000Z-21.498
X6.864Y0.000Z-21.498
X6.865Y0.000Z-21.498
X6.866Y0.000Z-21.498
X6.867Y0.000Z-21.498
X6.868Y0.000Z-21.498
X6.869Y0.000Z-21.498
X6.870Y0.000Z-21.498
X6.871Y0.000Z-21.498
X6.872Y0.000Z-21.498
X6.873Y0.000Z-21.498
X6.874Y0.000Z-21.498
X6.875Y0.000Z-21.498
X6.876Y0.000Z-21.498
X6.877Y0.000Z-21.498
X6.878Y0.000Z-21.498
X6.879Y0.000Z-21.498
まだ続きますが,文字数の関係でここまで載せます
Xは6.785~14.496,Yは0,Zは-21.553まで続きます.

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

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

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

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

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

meg_

2019/09/20 09:44

今困っているのは、テキストデータの読み込みですか? グラフ部分は実装済みであれば、そのコードを掲載ください。
magichan

2019/09/20 09:50

「Yは0 まで続きます」とありますが、Yの値は0 以外無いということですか?
11390

2019/09/20 11:01

今困っているのは、txtデータの読み込みと、それを利用した2Dデータです。グラフ部分は実装していません Yは0だけです。 なのでYは無視してもいいです。 やり方を言われてもあまり分からないのでコードを踏まえて教えていただけると助かります。 上記はランダムの数値のようなので、これを私のデータに置き換えたいのです。 不明な点があればその都度答えるのでお願いいたします
meg_

2019/09/20 12:06

txtデータの読み込みなら「python テキスト 読み込み」で検索すれば良いかと思います。 読み込んだデータはリストにすると扱いやすいかと思います。 ※Pythonは日本語のドキュメントもありますので読んでみてください
KojiDoi

2019/09/20 13:14

pythonでなければならない理由はなんでしょうか。すでについているコメントが消化できないレベルだと、なかなか道は険しいと思います。エクセルではダメなんですか?
guest

回答3

0

  1. ファイルから1行の文字列を読み込む
  2. X,Y,Zの文字で区切って文字列を分解
  3. 分解した文字列をそれぞれ浮動小数点数に変換
  4. あとは煮るなり焼くなり
  5. ファイルが尽きるまで1.から繰り返す

上記の手順でお望みのことが実現できると思われますが、なにか不明な項目はあるでしょうか。

投稿2019/09/20 10:49

編集2019/09/20 10:51
y_waiwai

総合スコア88038

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

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

11390

2019/09/20 11:04

すいませんが言葉で言われてると、素人なのであまり意味が分かりません。例を挙げていただけると幸いです。 例えば私が挙げたtxtファイルまでのグラフを表示してもらえると、分かりやすいです
y_waiwai

2019/09/20 11:30

1行の文字列を取得する > X6.785Y0.000Z-21.498 ここでほしいのは6.785、0.000、-21.498の数値でしょう。 それを取得するためには、その文字列を、XYZの文字で分解すれば、 "6.785"、"0.000"、"-21.498"という文字列が得られます あとは文字列から数値変数に変換するという操作になりますが、 あなたのわからないというのはこの内のどれでしょうか。 #提示したどれも、適切なキーワードでググれば方法が出てくるものばかりです
11390

2019/09/23 10:29

すいません.全くの初心者だったので調べてみても適切に当てはめる事が出来ずに,さっぱりわけがわかりませんでした. 次からはもう少し勉強してから質問する事にします.
guest

0

ベストアンサー

python

1import pandas as pd 2import numpy as np 3import matplotlib.pyplot as plt 4from mpl_toolkits.mplot3d import Axes3D 5from matplotlib import cm 6from matplotlib.ticker import LinearLocator, FormatStrFormatter 7 8with open(ファイルのパス, mode="r") as f: 9 lines = f.readlines() 10 lines = [text.replace(chr(92), "") 11 .replace("X", " ") 12 .replace("Y", " ") 13 .replace("Z", " ") for text in lines] 14 15lines = [text.split(" ") for text in lines] 16lines = pd.DataFrame(lines, columns=["a", "x", "y", "z"]) 17 18fig = plt.figure() 19ax = fig.gca(projection='3d') 20 21X = lines["x"].astype(float).values 22Y = lines["y"].astype(float).values 23X, Y = np.meshgrid(X, Y) 24R = np.sqrt(X + Y) 25Z = np.sin(R) 26 27surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, 28linewidth=0, antialiased=False) 29 30ax.set_zlim(7, 22) 31ax.zaxis.set_major_locator(LinearLocator(10)) 32ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) 33 34fig.colorbar(surf, shrink=0.5, aspect=5) 35 36plt.show() 37

15行目までが付け足したコードです

投稿2019/09/21 22:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

Python provides inbuilt functions for creating, writing and reading files. There are two types of files that can be handled in python, normal text files and binary files (written in binary language,0s and 1s).

Text files: In this type of file, Each line of text is terminated with a special character called EOL (End of Line), which is the new line character (‘\n’) in python by default.

投稿2019/09/20 11:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問