2016-09-14 2 views
0

실험 데이터가 있고 함수 f (x; I, d, s)를 여러 번 넣고 싶습니다. 각 피팅은 일련의 매개 변수를 생성합니다. 제가 3 번 장착되어 총 9 개의 매개 변수로 끝났다고 가정 해 봅시다 : I_1, I_2 ... s_3. 나는 각각의 매개 변수 세트가 키의 샘플에 정렬되는 설명적인 헤더가있는 3 * 3 테이블에 값을 표시하고자합니다. Table aligned with keygnuplot : 키와 테이블 정렬

간략하게하기 위해 데이터없이 3 개의 수평선을 표시하고 변수를 실제로 적용하는 것이 아닙니다. I는 유액와 줄거리를 후 처리하고 (및 패키지 siunitx 같은 amsmath 등) 배향 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