Pgfplots: 원시 gnuplot 문자열 단위 없는 플롯 너비 및 높이로 전달

Pgfplots: 원시 gnuplot 문자열 단위 없는 플롯 너비 및 높이로 전달

MWE:

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots} 
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
  group style={
    group size=1 by 4,
    vertical sep=0.1in,
  },
  scale only axis,
  width=\columnwidth-0.5in-0.09in,
  domain=-0.482362:0.035276,
  xmin=-0.495, xmax=0.0352762,
]
\nextgroupplot[
  height=0.8in,
  ymin=-0.9, ymax=4.9,
]
  \addplot
    gnuplot[id=plot1, raw gnuplot]
      {plot '< plotpointreduce -t 0.0175 --max-dist 0.1
         --width 2.897 --height 0.8
         --xrange \pgfkeysvalueof{/pgfplots/xmin} \pgfkeysvalueof{/pgfplots/xmax}
         --yrange \pgfkeysvalueof{/pgfplots/ymin} \pgfkeysvalueof{/pgfplots/ymax}
         --x-column delta --y-column v_12 data_fem_0.dat' u 'delta':'v_12'}
    ;
\end{groupplot}
\end{tikzpicture}
\end{document}

groupplot및 옵션 에 지정된 축 너비(\columnwidth-0.5in-0.09in) 및 높이(0.8in) 값을 및와 \nextgroupplot유사한 원시 gnuplot 문자열에 전달하려면 어떻게 해야 합니까 ?--xrange--yrange

스크립트는 및 plotpointreduce에 대해 단위 없는 부동 소수점을 예상하며 비율만 고려됩니다.--width--height

업데이트:

통화를 다음으로 변경했습니다.

  \addplot
    gnuplot[id=plot1, raw gnuplot]
      {plot '< plotpointreduce -t 0.0175 --max-dist 0.1
         --width  \pgfkeysvalueof{/pgfplots/width}
         --height \pgfkeysvalueof{/pgfplots/height}
         --xrange \pgfkeysvalueof{/pgfplots/xmin} \pgfkeysvalueof{/pgfplots/xmax}
         --yrange \pgfkeysvalueof{/pgfplots/ymin} \pgfkeysvalueof{/pgfplots/ymax}
         --x-column delta --y-column v_12 data_fem_0.dat' u 'delta':'v_12'}
    ;

그러나 \pgfkeysvalueof{/pgfplots/width}.\columnwidth -0.5in-0.09in
이것을 실제 값으로 어떻게 변환할 수 있나요 inch?

나는 긴 '집에서 만든' 스크립트 plotpointreducehttps://gist.github.com/Hotschke/afdcd9efabe385c641a6.

업데이트 II

     --width  \the\pgfkeysvalueof{/pgfplots/width}

\the열 너비가 확장됩니다.

내 스크립트가 여전히 불평합니다plotpointreduce: error: argument -w/--width: invalid float value: '345.0pt-0.5in-0.09in'

그래서 제 질문은 단순히 이 표현을 확장하는 것에 관한 것 같아요. 가장 짧은 방법은 무엇입니까?

답변1

추가 인터넷 검색을 통해 알아낼 수 있었습니다. 이것이 가장 신뢰할 수 있는 방법인지는 모르겠습니다.

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usepgfplotslibrary{groupplots} 
\makeatletter
\def\Printdimensionless#1{\strip@pt \dimexpr (#1)\relax}
\makeatother
% For convenience
\newcommand{\pwidth}{\Printdimensionless{\pgfkeysvalueof{/pgfplots/width}} } % trailing space important
\newcommand{\pheight}{\Printdimensionless{\pgfkeysvalueof{/pgfplots/height}} }
\newcommand{\pxrange}{\pgfkeysvalueof{/pgfplots/xmin} \pgfkeysvalueof{/pgfplots/xmax} }
\newcommand{\pyrange}{\pgfkeysvalueof{/pgfplots/ymin} \pgfkeysvalueof{/pgfplots/ymax} }
\begin{filecontents}{data_fem_0.dat}
id   delta      E_1        E_2        v_12       v_21       G_12     err         porosity  E_cs_1_norm  E_cs_2_norm
049  -0.48      2.6891     2.9098     0.33942    0.36728    1.1087   0.010752    0.914955  0.89481      0.968249
047  -0.46      0.014184   0.1251     -0.3269    -2.8832    0.71385  0.0011567   0.88558   0.00343525   0.0302982
\end{filecontents} % inserts '%' comment lines
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
  group style={
    group size=1 by 2,
    vertical sep=0.1in,
  },
  scale only axis,
  width=\columnwidth-0.5in,
  domain=-0.482362:0.035276,
  xmin=-0.495, xmax=0.0352762,
]
\nextgroupplot[
  height=0.8in,
  ymin=-0.9, ymax=4.9,
]
  \addplot
    gnuplot[id=poisson12, raw gnuplot]
      {set datafile commentschars '#\%';
          \addplot
gnuplot[id=young1, raw gnuplot]
  {plot '< plotpointreduce -t 0.0
    --width  \pwidth --height \pheight
    --xrange \pxrange --yrange \pyrange
     -x delta -y E_cs_1_norm ./data_fem_0.dat' u 'delta':'v_12'}; 'delta':'v_12'}
    ;
\nextgroupplot[
  height=0.8in,
  ytick={0,0.5,1},
  ymin=0, ymax=1,
]
  \addplot
    gnuplot[id=young1, raw gnuplot]
      {set datafile commentschars '#\%';
        plot '< plotpointreduce -t 0.0
         --width  \pwidth --height \pheight
         --xrange \pxrange --yrange \pyrange
         -x delta -y E_cs_1_norm ./data_fem_0.dat' u 'delta':'E_cs_1_norm'};
\end{groupplot}
\end{tikzpicture}
\end{document}

유용한 답변:

관련 정보