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

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

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

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

Python 3.x

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

2回答

1537閲覧

for文で行列(.csvファイル)を読み込んで表示させた画像を連続保存したい

mgumi66

総合スコア15

Matplotlib

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

Python 3.x

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2019/07/12 08:57

編集2019/07/12 09:28

pythonでフォルダから.csvファイルの行列を読み込んで画像表示させているのですが、表示させた画像を連続保存する方法ってありますか?
plt.savefig() を使用させてみたのですが、計算させた最後のファイルだけが保存される状況です。

import numpy as np import pandas as pd import matplotlib.pyplot as plt import os, glob dir = '~/2D_Dataset/train/One/*.csv' df_list=[] book_dict = {} for i in glob.glob(dir): file_name = os.path.basename(i) book_dict[file_name] = print(i) data=pd.read_csv(i, header=None, skiprows=0) df_list.append(data) for j in df_list: print(j) plt.figure() plt.imshow(j) plt.savefig('j.png')

結果は以下のように出力されます。

0 1 2 3 4 5

0 0.31 0.12 0.40 0.41 1.00 0.24
1 0.00 0.00 0.31 0.40 0.00 0.00
2 0.88 0.34 0.68 0.39 0.48 1.00
3 0.38 0.32 0.13 0.46 0.28 0.21
4 0.70 0.73 0.60 0.35 0.41 0.76
5 0.70 0.71 0.86 0.35 0.59 0.68
0 1 2 3 4 5
0 0.70 0.71 0.86 0.35 0.59 0.68
1 0.37 0.37 0.11 0.02 1.00 0.18
2 0.31 0.15 0.30 0.35 0.24 0.38
3 0.38 0.32 0.13 0.46 0.28 0.21
4 0.70 0.71 0.86 0.35 0.59 0.68
5 0.38 0.32 0.13 0.46 0.28 0.21
0 1 2 3 4 5
0 0.70 0.71 0.86 0.35 0.59 0.68
1 0.72 0.27 0.39 0.34 0.28 0.62
2 0.88 0.34 0.68 0.39 0.48 1.00
3 1.00 0.46 0.86 0.40 0.59 0.88
4 1.00 0.46 0.86 0.40 0.59 0.88
5 0.37 0.37 0.11 0.02 1.00 0.18
![イメージ説明]

イメージ説明

このように出力される画像をファイルとして個別に保存したいのですが、matplotlibで出来ますでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

質問に記述したコードを下のように修正して、CSVのファイル名と同じ名前で画像を保存するようにするのはどうでしょうか

Python

1dir = '~/2D_Dataset/train/One/*.csv' 2for i in glob.glob(dir): 3 file_name = os.path.basename(i) 4 # ファイル名から拡張子を分離 5 basename,_ = os.path.splitext(file_name) 6 data=pd.read_csv(i, header=None, skiprows=0) 7 plt.figure() 8 plt.imshow(data) 9 # タイトルを描画(追加) 10 plt.title(basename) 11 # CSVと同じ名前で画像を保存 12 plt.savefig(f"{basename}.png") 13 # グラフを削除(追加) 14 plt.clf()

投稿2019/07/12 09:23

編集2019/07/12 10:36
magichan

総合スコア15898

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

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

mgumi66

2019/07/12 10:13 編集

CSVと同じ名前で保存することができましたが、画像は対応しておらず全て同じ画像で保存されました。
magichan

2019/07/12 10:39

私の環境では問題なかったのですが。なんでだろ?? とりあえずコードに ループ毎にグラフをクリアするコードを追加しましたので、これで再度確認をとってもらえませんでしょうか。 あと、グラフにタイトル(ファイル名)も追加しましたので、ファイル名とタイトルが一致しているかどうかも合わせて確認ください。
mgumi66

2019/07/13 13:44

今回はうまくいきました。タイトルを付けて確認するのも良い方法ですね。どうもありがとうございます!
guest

0

plt.savefig('j.png')plt.savefig('{}.png'.format(j))としてみてください。

投稿2019/07/12 09:02

can110

総合スコア38266

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

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

mgumi66

2019/07/12 09:20

一般的にはそれでOKなのでしょうか。試してみたのですがエラーになりました。
y_waiwai

2019/07/12 12:07

エラーになるというならエラーメッセージを提示しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問