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

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

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

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

Matplotlib

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

機械学習

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

Python

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

Q&A

解決済

2回答

1452閲覧

2D プロット 比較 一つの画面に表示 色指定

11390

総合スコア20

ファイル

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

Matplotlib

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

機械学習

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

Python

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

0グッド

0クリップ

投稿2019/09/23 13:24

現在 2Dにイメージを表示させて二つのデータを色を指定して比較しようとしています.ですが,なぜか後者のファイルだけが表示されてしまいます.エラーは起きていないので原因が分かりません.
以下にプログラムを載せます.大文字は無視してください.見づらくてすいません
よければご教示してください

#プログラム
import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする

x_list=[] # x_listを定義 (空のリストを作成)
z_list=[] # z_listを定義

f=open(r'C:\Users\user\Desktop\python\bisyouyamae.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む
f=open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt')

データを読み込み,x_listとy_listに値を格納する

for line in f:
data1 = line[:-1].split(' ')
x_list.append(float(data1[0]))
z_list.append(float(data1[1]))

for line in f:
data2 = line[:-1].split('')
x_list.append(float(data2[0]))
z_list.append(float(data2[1]))

columns=['data1', 'data2']

描画する

plt.plot(x_list, z_list)
plt.plot(x_list,z_list,color='RED',linewidth=4.0,)
plt.plot(x_list,z_list,color='BLUE',linewidth=4.0,)
#プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ
#赤色で出力.線の太さを4.0pt

#plt.plot(x_list, z_list,marker='o') #線と点を作る
#plt.plot(x_list, z_list,'o') #点を作る

plt.xlabel('X') # x軸のラベル
plt.Zlabel('Z ') # y軸のラベル
#plt.legend(loc='best') # legend

その他,描画用オプション

plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.grid(True) #グラフの枠を作成

plt.show() # 描画結果を出力する。必ず書く。

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

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

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

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

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

guest

回答2

0

ベストアンサー

問題点を何点か。

1. nomukenさんが指摘している通り、

Python

1f = open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt') 2f = open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt')

のように記述すると、1行目で先に開いたファイルオブジェクト(f)が後で開いたファイルで上書きされてしまいます。
ここは

Python

1f1 = open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt') 2f2 = open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt')

のように変数名を分けるべき。
合せて、データ読み込み部も

Python

1# data1読み込み 2for line in f1: 3 data1 = line[:-1].split(' ') 4 x_list.append(float(data1[0])) 5 z_list.append(float(data1[1])) 6# data2読み込み 7for line in f2: 8 data2 = line[:-1].split('') 9 x_list.append(float(data2[0])) 10 z_list.append(float(data2[1]))

となる。

2. 現状では、1にて読み込んだデータを x_list および z_list に格納しているが、比較のために2つのファイルからのデータを別々に描画したいのであれば、データ毎にデータを格納する変数も分けるべき。

Python

1x1_list=[] # data1格納用のx_listを定義 2z1_list=[] # data1格納用のz_listを定義 3x2_list=[] # data2格納用のx_listを定義 4z2_list=[] # data2格納用のz_listを定義 5 6# (略) 7 8# data1読み込み 9for line in f1: 10 data1 = line[:-1].split(' ') 11 x1_list.append(float(data1[0])) 12 z1_list.append(float(data1[1])) 13# data2読み込み 14for line in f2: 15 data2 = line[:-1].split('') 16 x2_list.append(float(data2[0])) 17 z2_list.append(float(data2[1]))

当然これに伴い Plot部も

Python

1# plt.plot(x_list, z_list) これは不要 2plt.plot(x1_list,z1_list,color='RED',linewidth=4.0,) 3plt.plot(x2_list,z2_list,color='BLUE',linewidth=4.0,)

と変数を分けて記述する

3. データ2の読み取り部

Python

1 data2 = line[:-1].split('')

の箇所は

Python

1 data2 = line[:-1].split(' ')

の間違いでは?

4. 凡例(legend)を使うのであれば、plot()時に labelオプションをつける

Python

1plt.plot(x1_list,z1_list,color='RED',linewidth=4.0, label='data1') 2plt.plot(x2_list,z2_list,color='BLUE',linewidth=4.0, label='data2')

とりあえず以上でちゃんと表示されるのではないでしょうか

投稿2019/09/24 00:35

編集2019/09/24 02:24
magichan

総合スコア15898

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

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

11390

2019/09/24 10:42

import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする ## データを読み込み,x_listとy_listに値を格納する x1_list=[] # data1格納用のx_listを定義 z1_list=[] # data1格納用のz_listを定義 x2_list=[] # data2格納用のx_listを定義 z2_list=[] # data2格納用のz_listを定義 f1=open(r'C:\Users\user\Desktop\python\bisyouyamae.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む f2=open(r'C:\Users\user\Desktop\python\bisyouyamaa.txt') #data1読み込み for line in f1: data1 = line[:-1].split(' ') x1_list.append(float(data1[0])) z1_list.append(float(data1[1])) #data2読み込み for line in f2: data2 = line[:-1].split(' ') x2_list.append(float(data2[0])) z2_list.append(float(data2[1])) ## ### 描画する plt.plot(x1_list,z1_list,color='RED',linewidth=4.0, label='data1') plt.plot(x2_list,z2_list,color='BLUE',linewidth=4.0, label='data2') #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ #赤色で出力.線の太さを4.0pt plt.xlabel('X') # x軸のラベル plt.Zlabel('Z') # y軸のラベル #plt.legend(loc='best') # legend # その他,描画用オプション plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.grid(True) #グラフの枠を作成 plt.show() # 描画結果を出力する。必ず書く。 ご指摘通り以上のように変更しましたが, could not convert string to float: '6.785 -21.498' とエラーが出てしまったのですが,どうすればいいでしょうか?
magichan

2019/09/24 10:44

data2 = line[:-1].split(' ') のスペースが全角になってません?
11390

2019/09/24 10:48

出来ました! ありがとうございます!
guest

0

ファイルを開いた時の変数が二つともfになってます。
そのため、後で開いているC:\Users\user\Desktop\python\bisyouyamaa.txtのファイルのデータだけで描画していると思います。
変数をf1f2などそれぞれ変えてみてはどうでしょうか

投稿2019/09/23 13:28

nomuken

総合スコア1627

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問