2016-08-05 389 views
1

我的跟蹤文件可以從here下載。使用matplotlib在pandas中以對數座標繪製x軸和y軸

當我只繪製對數座標的y軸。一切都很好

import pandas as pd 
import numpy 
import matplotlib.pyplot as plt 

iplevel = pd.read_csv('iplevel.csv') 
fig = plt.figure() 
#plt.xscale('log') 
plt.yscale('log') 
plt.title(' Size Vs Duration (at IP level) for ') 

plt.xlabel('Duration (in seconds)') 
plt.ylabel('Size (in bytes)') 
plt.scatter(iplevel['Time'], iplevel['Length']) 
fig.tight_layout() 
fig.savefig('iplevel_timevdur.png', dpi=fig.dpi) 

Only y axis in log scale

當我繪製x和對數尺度Y軸,奇怪的事情發生

import pandas as pd 
import numpy 
import matplotlib.pyplot as plt 

iplevel = pd.read_csv('iplevel.csv') 
fig = plt.figure() 
plt.xscale('log') 
plt.yscale('log') 
plt.title(' Size Vs Duration (at IP level) for ') 

plt.xlabel('Duration (in seconds)') 
plt.ylabel('Size (in bytes)') 
plt.scatter(iplevel['Time'], iplevel['Length']) 
fig.tight_layout() 
fig.savefig('iplevel_timevdur.png', dpi=fig.dpi) 

enter image description here

我不知道我要去的地方錯誤。任何想法/建議歡迎

回答

2

它看起來像你的X值有一些零。沒有定義log(0)log(veryclosetozero)10^{-verymuch}

編輯:
此外,數字的浮點表示並不總是完全準確,所以0.0可能最終被存儲爲0.00000000000000000001或相似。在這種情況下,日誌函數不會引發錯誤,但只需計算非常小的對數。

+0

謝謝。因此,移除價值是唯一的解決方案。或者有什麼想法。 – user2532296

+0

如果你想記錄,是的。 (好吧,唯一好的解決方案是,你可以添加一個常量偏移量,但這會誤導你的數據。) – Alex

+0

你也可以使用'ax.set_xlim'和'ax.set_ylim'來設置座標軸的極限,只需隱藏破碎的值。看起來像10E-10就足夠了,因爲較低的x限制。 – pathoren