请考虑以下示例:
\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}