2016-07-13 21 views
0

我有一個數據文件(data.txt中),其具有6列: 列1和4是x和y的數據與列2和3是用於第1列和4列和第5(非對稱)的誤差棒作爲(非對稱)誤差線6列:Python - 使用錯誤條從數據文件繪圖?

100 0.77 1.22 3 0.11 0.55 
125 0.28 1.29 8 0.15 0.53 
150 0.43 1.11 14 0.10 0.44 
175 0.33 1.01 22 0.18 0.49 
200 0.84 1.33 34 0.11 0.48 

我想繪製這個什麼。我知道我需要使用

import numpy as np 
import matplotlib.pyplot as plt 

plt.plotfile(......) 

plt.show() 

位在plotfile括號之間是哪裏我不知道如何與這些誤差線的列(以及別的我錯過了)。

+1

這似乎是'plotfile)一個非常先進的情況下(';你爲什麼不簡單地用'numpy.loadtxt'讀取數據並用'plt.errorbar'繪製它?這隻會給你一些額外的代碼行,它也可能會讓你的代碼更易於閱讀/理解。 – Bart

回答

1

使用numpy.loadtxt作品完美:

import numpy as np 
import matplotlib.pyplot as plt 

data = np.loadtxt("data.txt") 
x = data[:, 0] 
y = data[:, 3] 
# errorbar expects array of shape 2xN and not Nx2 (N = len(x)) for xerr and yerr 
xe = data[:, 1:3].T 
ye= data[:, 4:].T 

plt.errorbar(x, y, xerr=xe, yerr=ye, fmt=".-") 

# if you want a log plot: 
plt.xscale("log") 
plt.yscale("log") 

plt.show() 
+0

太棒了!是否有額外的一行或兩行代碼使其成爲對稱的日誌圖? (x和y)?我知道在這種情況下,沒有必要考慮數據,但假設未來數據中需要對數圖表? – Aomine