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

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

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

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Python

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

Q&A

解決済

1回答

923閲覧

matlabplotを使って複数の折れ線グラフをプロットする

tedmosby

総合スコア46

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Python

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

0グッド

0クリップ

投稿2021/11/20 04:43

現在以下のようなCSVをPythonのmatlabplotを用いて折れ線グラフをプロットしたいと思っています。

csv

10.03,0.974917,-0.330719,-0.695142,-0.645709,0.999507,-0.25156,-0.117937,-0.194653,0.987551 20.1,0.999999,-0.413285,-0.890581,-0.572809,1,-0.494727,-0.227334,-0.0783134,1 30.3,1,-0.991819,-0.999934,-0.899737,1,-0.291845,-0.229779,-0.171816,1

第一要素をx軸として、第二要素以下をそれぞれy軸としてプロットしたいと思っています。

そこで以下のようなPythonコードを書きました。

python

1import csv 2import matplotlib.pyplot as plt 3 4fn = 'test.csv' 5 6with open(fn, mode='r', newline='') as f_in: 7 reader = csv.reader(f_in) 8 data_array = [row for row in reader] 9 10 11plot_x = [] 12plot_y1 = [] 13plot_y2 = [] 14plot_y3 = [] 15plot_y4 = [] 16plot_y5 = [] 17plot_y6 = [] 18plot_y7 = [] 19plot_y8 = [] 20plot_y9 = [] 21for i in data_array: 22 plot_x.append(i[0]) 23 plot_y1.append(i[1]) 24 plot_y2.append(i[2]) 25 plot_y3.append(i[3]) 26 plot_y4.append(i[4]) 27 plot_y5.append(i[5]) 28 plot_y6.append(i[6]) 29 plot_y7.append(i[7]) 30 plot_y8.append(i[8]) 31 plot_y9.append(i[9]) 32 33plt.plot(plot_x, plot_y1) 34plt.plot(plot_x, plot_y2) 35plt.plot(plot_x, plot_y3) 36plt.plot(plot_x, plot_y4) 37plt.plot(plot_x, plot_y5) 38plt.plot(plot_x, plot_y6) 39plt.plot(plot_x, plot_y7) 40plt.plot(plot_x, plot_y8) 41plt.plot(plot_x, plot_y9) 42 43plt.show()

実行すると以下画像のような折れ線グラフが作成されましたが、第二要素以下に正負の数が入り混じっているためかおかしな折れ線グラフになっているように思います。
このy軸を負から正へとソートして表示するにはどのようにすればいいのでしょうか?

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

まとめて表示すると以下の様になります。

plot1

補遺

Pandas を使う場合。

python

1import pandas as pd 2import matplotlib.pyplot as plt 3 4fn = 'test.csv' 5df = pd.read_csv(fn, header=None) 6 7df.set_index(0).plot() 8plt.legend(loc='upper right') 9 10plt.show()

投稿2021/11/20 05:04

編集2021/11/20 05:35
melian

総合スコア19865

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

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

tedmosby

2021/11/20 05:17

コードをGoogle Colab環境で実行したからかもしれません。 (なのでCSV読み込みの部分でコードが少し変わります。) こちらはローカル環境で実行されましたか?
melian

2021/11/20 05:23 編集

なるほど、今気が付きました。ところで、CSV ライブラリではなく、Pandas で読み込んで表示してみてはどうでしょうか。手間がかかりません。
tedmosby

2021/11/20 05:27

ご丁寧にありがとうございます。pandas使ってみます。 Google colabとローカルだとmatlabplotlibの挙動が異なるんですね、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問