PSTricks:错误的轴标签

PSTricks:错误的轴标签

请考虑以下示例:

\documentclass{article}

\usepackage{pstricks-add}

\def\sandsynlighed#1#2{%
  \psframe[
    linecolor = red,
    fillstyle = solid,
    fillcolor = blue!50
  ](#1,0)(!#1 \bredde add #2 4 div)
}

\psset{unit=0.75}

\begin{document}

\def\bredde{1.5 }
\begin{pspicture}(-0.9,-0.5)(14.3,11.3)
  % Akserne.
  \psaxes[
    xlabelOffset = -0.75,
    Ox = -1,
    dx = 1.5,
    xLabels = {0,1,2,3,4,5,6_{+0},6_{+1},7},
    Dy = 2,
    dy = 0.5
  ]{->}(0,0)(-0.25,-0.25)(14,10.75)[$X$,0][$100 \cdot P(X)$,90]
  % Sandsynlighederne.
  \sandsynlighed{0}{18.70}
\end{pspicture}

\end{document}

输出

可以看出,X-axis 完全错误,我不知道我做错了什么。我希望标签按 指定xLabels;我该如何获得它?

答案1

您对 x 轴的指令存在冲突。请尝试以下方法:

\documentclass{article}

\usepackage{pstricks-add}

\def\sandsynlighed#1#2{%
  \psframe[
    linecolor=red,
    fillstyle=solid,
    fillcolor=blue!50
  ](#1,0)(!#1 \bredde add #2 4 div)
}

\psset{unit=0.75}

\begin{document}

\def\bredde{1.5 }
\begin{pspicture}(-0.9,-0.5)(14.3,11.3)
  \psaxes[
    xlabelOffset=-0.75,
    %%Ox=-1,
    %%dx=1.5,
    xLabels={0,1,2,3,4,5,6_{+0},6_{+1},7},
    Dy=2,
    dy=0.5
  ]{->}(14,10)[$X$,0][$100 \cdot P(X)$,90]
  % Sandsynlighederne.
 \sandsynlighed{0}{18.70}
\end{pspicture}

\end{document}  

在此处输入图片描述

更新

鉴于您的评论,这里有一个相当不同的方法。在这里,我深入研究了pst-plot包,以查看标签的放置方式并复制了一些代码。这里的关键是宏\multido。此外,由于标签位置是用枚举的\nA,但我们正在逐步执行2,所以我添加了另一个计数器\nB以从中提取正确的标签\psk@xLabels。所有这些都包含在宏中\myxlabels

为了获得所需的间距,我将 设置xunit为一个新值。也许您不想全局执行此操作。如果是这样,那么只需xunit在包含 的组中重新分配即可pspicture

另外,您不需要\bredde像以前那样添加额外的空间。您可以\space在调用后脚本命令时使用它。

这是一个新的 MWE:

\documentclass{article}

\usepackage{pstricks-add}

\def\sandsynlighed#1#2{%
  \psframe[
    linecolor=red,
    fillstyle=solid,
    fillcolor=blue!50
  ](#1,0)(!#1 \bredde\space add #2 4 div)
}

\makeatletter
\def\myxlabels#1{\def\psk@xLabels{#1}%%'
      \multido{\nA=1+2,\nB=0+1}{10}{\uput{\psxlabelsep}[-90]{\pst@xLabelsRot}(\nA,0)%%'
      {\strut\pshlabel{\psPutXLabel{\nB}}}}%%'
}
\makeatother

\psset{unit=0.75,xunit=0.75}

\begin{document}

\def\bredde{2}
\begin{pspicture}[](-0.9,-0.5)(14.3,11.3)
  \psaxes[
    dx=2,
    xLabels={,},
    Dy=2,
    dy=0.5
  ]{->}(20,10)[$X$,0][$100 \cdot P(X)$,90]
  %% Sandsynlighederne.
  \myxlabels{0,1,2,3,4,5,6_{+0},6_{+1},7}

 \sandsynlighed{0}{18.70}
\end{pspicture}

\end{document}  

在此处输入图片描述

答案2

偏移量不适用于特殊标签设置。请pst-plot.tex尝试http://texnik.dante.de/tex/generic/pst-plot/ 然后使用类似的东西:

\documentclass{article}
\usepackage{pstricks-add}    
\def\sandsynlighed#1#2{%
  \psframe[linecolor=red,fillstyle=solid,
           fillcolor=blue!50](#1,0)(!#1 \bredde add #2 4 div)}

\psset{unit=0.75}
\begin{document}

\def\bredde{1.5 }
\begin{pspicture}(-0.9,-0.5)(14.3,11.3)
  % Akserne.
  \psaxes[
    xunit=1.5,
    xLabels={,0,1,2,3,4,5,6_{+0},6_{+1},7},
    xlabelOffset=-0.75,
    Dy=4,dy=1,
  ]{->}(9,10.75)[$X$,0][$100 \cdot P(X)$,90]
  % Sandsynlighederne.
  \sandsynlighed{0}{18.70}
\end{pspicture}

\end{document}

在此处输入图片描述

答案3

这是我最终得到的结果;除了结合 中的标签改进之外pst-plot,还可以缩放两个轴(通过更改 的值来更改 x 轴的宽度\xUnit,通过更改 的值来更改 y 轴上的单位\yUnit):

\documentclass{article}

\usepackage{pst-plot}
\usepackage{siunitx}
\usepackage{xfp}

\def\displacement{\fpeval{\xUnit/2}}
\def\yunit{\fpeval{\yUnit/4}}
\def\axisHeight{\fpeval{40/\yUnit+0.4}}
\def\width{\fpeval{9*\xUnit+0.8}}

\makeatother
\def\probability#1#2{%
  \psframe[
    fillstyle = solid,
    fillcolor = blue!50,
    linecolor = red
  ](\fpeval{#1*\xUnit},0)(\fpeval{(#1+1)*\xUnit},\fpeval{#2/4})%
}

\begin{document}

\begin{figure}
\def\xUnit{1.1}
\def\yUnit{4}
\centering
 \psset{dimen = m}
  \begin{pspicture}(-1.3,-0.6)(\width,11.0)
    % Axes.
    \psaxes[
      xunit = \xUnit,
      xLabels = {0,1,2,3,4,5,6_{+0},6_{+1},7},
      xlabelOffset = -\displacement,
      yunit = \yunit,
      dy = 1,
      Dy = \yUnit
    ]{->}(0,0)(0,0)(9.3,\axisHeight)[$X$,0][$100 \cdot P(X)$~[\si{\percent}],90]
    % Probabilities.
    \probability{0}{18.70}
    \probability{1}{39.83}
    \probability{2}{29.87}
    \probability{3}{9.958}
    \probability{4}{1.532}
    \probability{5}{0.1021}
    \probability{6}{0.002432}
    \probability{7}{0.0001667}
    \probability{8}{0.000001198}
  \end{pspicture}
\end{figure}

\end{document}

输出

相关内容