2016-09-14 32 views
0

我有一些實驗數據,並希望幾次適合函數f(x;我,d,s)。每個擬合產生一組參數;讓我們假設我裝了3次,最後總共有9個參數:I_1,I_2 ... s_3。我想在一個3 * 3的表格中顯示這個值,這個表格有一些描述性的標題,每一組參數都與它在樣本中的鍵值對齊:Table aligned with keygnuplot:對齊表與鍵

爲了簡單起見,我只顯示了3條沒有數據的水平線,變量而不是真正適合它們。我在後處理用乳膠情節(和包像siunitxamsmath等),對準通過的sprintf\tabular的組合來實現:

set key bottom left Left reverse spacing 1.25 
set yrange [0:1] 
set termopt noenhanced 
I_1=608.18 
d_1=0.61 
s_1=0.005 
I_2=607.53 
d_2=0.61 
s_2=0.005 
I_3=611.97 
d_3=0.63 
s_3=0.004 

plot 0.9 lw 3 t sprintf("\\begin{tabular}{ccc} $I_{rel}$ & $\\delta/\\si{\\per\\cm}$ & $s/\\si{\\per\\cm}$ \\\\ \\num{%.2f} & \\num{%.2f} & \\num{%.3f} \\\\ & & \\end{tabular}",I_1,d_1,s_1), \ 
0.8 lw 3 t sprintf("\\begin{tabular}{ccc} \\parbox{\\widthof{$I_{rel}$}}{~} & \\parbox{\\widthof{$\\delta/\\si{\\per\\cm}$}}{~} & \\parbox{\\widthof{$s/\\si{\\per\\cm}$}}{~} \\\\ \\num{%.2f} & \\num{%.2f} & \\num{%.3f} \\\\ & & \\end{tabular}",I_2,d_2,s_2), \ 
0.7 lw 3 t sprintf("\\begin{tabular}{ccc} \\parbox{\\widthof{$I_{rel}$}}{~} & \\parbox{\\widthof{$\\delta/\\si{\\per\\cm}$}}{~} & \\parbox{\\widthof{$s/\\si{\\per\\cm}$}}{~} \\\\ \\num{%.2f} & \\num{%.2f} & \\num{%.3f} \\\\ & & \\end{tabular}",I_3,d_3,s_3) 

set term epslatex colour rounded 
set out "gnuplot-table.tex" 
replot 

每個「標題」包含自己的3行級別\tabular:第一行包含表格標題長度的空白空間,第二行包含實際數字,第三行是完全空白的。前者需要正確的垂直居中數字和標題,而後者則需要第二行與關鍵樣本水平對齊。

雖然我的代碼工作,但它非常混亂,只有很差的定製。有沒有人有更好的想法實現這一目標?

回答

0

要在密鑰中獲得「表頭」,您可以在繪圖範圍之外繪製白色點或線,並將此圖的標題設置爲所需的標題。然後像你一樣繪製其餘的部分,但沒有三個行表。你有一個標題,一切都應該很好地對齊。

而且移動set termset out的劇本,然後取出replot,如果沒有原因,我不知道的設計像這樣。

+0

問題是,表頭和表項應該集中對齊,這由LaTeX負責。就像現在一樣,表格條目是「僞對齊」的;而在你的建議中,根本就沒有對齊。標題和條目的長度越大,表格越不匹配! 關於replot:沒有什麼強烈的理由,我只是習慣於在繪圖之後停下來,檢查屏幕上彈出的(qt-)圖,只有在一切正常的情況下才開始編寫文件。 – Eldrad

+0

我明白了。那麼我想你的解決方案,我很好。你可以按照我的方法,但指定字段大小硬編碼,你也會有對齊。 –

+0

很難預測什麼會有更大的寬度 - 標題或條目?我的目標是找到一個比我的規模更容易的代碼(更多/更少的行或列),同時儘可能避免硬編碼。 – Eldrad