2016-12-15 4 views
1

複数のデータファイルをプロットするためのループを作成しようとしています。savefigでエラーが発生しました:ValueError:float NaNを整数に変換できません

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 


import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import glob 
import os 

pathf1 = r'/home/foo/condt/' 
allfiles1 = glob.glob(pathf1 + '/*.csv') 
fig1 = plt.figure() 



for filee_ in allfiles1: 
     dfp = pd.read_csv(filee_, sep=',', encoding='utf-8') 
     ax = plt.subplot(111) 
     ax.plot(dfp['col3'], dfp['col2'], ls = '-', color='red', marker='x', markersize = 25.0) 
     ax.errorbar(dfp['col1'], dfp['col2'], yerr=dfp['PN_6_FLUX_ERR'], ls='None', marker = '.') 
     ax.set_xlim((dfp['col1'].min()-0.1*(dfp['col1'].max()-dfp['col1'].min())), ((dfp['col1'].max()+0.1*(dfp['col1'].max()-dfp['col1'].min())))) 
     ax.set_ylim((dfp['col2'].min()-dfp['col2'].max()),((dfp['col2'].max()/2.0)+dfp['col2'].max()) 
     ax.grid() 
     plt.xticks(dfp['col1']) 
     plt.yticks(dfp['col2']) 
     plt.xlabel('col1') 
     plt.ylabel('col2') 
     plt.title('col1 vs. col2') 
     filenamee = ''+ str('%02s' %filee_)+'.png' 
     plt.savefig(filenamee, dpi=600) 
     plt.clf() 

plt.show() 

私は、この取得していますコードを実行します。私はあることを行って、コードのすべてからダニを削除すると、ファイル内のそのような

plt.savefig(filenamee, dpi=600)

ValueError: cannot convert float NaN to integer

列、

col1   col2    col3 
3.39895E-12 52459.7796644 
3.62529E-12 52461.7358623 
3.67719E-12 52501.6052951 
2.26977E-11 56340.081624 
3.38851E-11 53574.1580939  53574.1580939 

を普通...しかし私は私のグラフにダニが必要です。どうすればこの問題を解決できますか?

+0

str( '%02s'%filee_)の結果は何ですか? –

+0

ファイルの名前を指定しています。このような; /home/foo/filename1.csv ...... /home/foo/filenamen.csv – anniejcannon

+0

本当ですか? "/home/foo/%02s.csv"%(ファイル名)の結果はどうですか?それは可能ですか? –

答えて

1

解決策が見つかりました。問題の原因はmatplotlibのライブラリです。それは一種のバグだと思う。この問題を解決するには、端末コマンドでmatplotlib_vennライブラリを更新する必要があります。

pip install --upgrade matplotlib_venn 
関連する問題