2016-07-13 5 views
0

私は6つの列を持つデータファイル(data.txt)を持っています: 列1と4は、列2のxとyデータで、列1と列4と5の(非対称)エラーバーです。私はこのをプロットしたい何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 

:列6(非対称)エラーバーであること。私は列にこれらのエラーバーを関連付ける(だけでなく、私が逃した何か)するかどうかはわかりませんどこでplotfile中括弧の間に

import numpy as np 
import matplotlib.pyplot as plt 

plt.plotfile(......) 

plt.show() 

を少し使用する必要があります知っています。完全numpy.loadtxt作品使用

+1

'plotfile()'のためにかなり高度なケースのように思えます。 'numpy.loadtxt'でデータを読み込み、' plt.errorbar'でプロットするのはなぜですか?これはコードの余分な行を追加するだけで、コードを読みやすく/理解しやすくなります。 – Bart

答えて

1

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

素晴らしい!これを対称ログプロットにするための余分な行または2つのコードがありますか? (xとyの両方)?この場合、データを考慮する必要はありませんが、将来のデータにログプロットが必要であると仮定していますか? – Aomine

関連する問題