我正在尝试绘制几何分布 PMF,我知道我可以手动构建一个离散值表,但我正在寻找一些不那么详尽且更准确的东西。所以我得到了 PMF 的散点图(最初被视为连续函数),现在我想用直线连接这些点。有没有办法做到这一点,或者你必须将实际点存储在表中?如果是这样,有没有办法自动计算表格的函数值?
\documentclass[oneside,final,14pt]{extreport}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{fillbetween}
\begin{document}
\tikzset{
declare function={
geom(\x,\p) = \p * (1-\p)^(\x);
},
}
\pgfplotsset{exp_chart/.style={
height=9cm, width=18cm,
xmin=0, xmax=4.5,
ymin=-0.05,
ymax=1.2,
xlabel={$x$},
ylabel={$f(x)$},
xtick = {0.5, 1, ..., 4.5},
ytick = {0.5, 1},
axis line style = thick,
axis lines = middle,
enlargelimits=false,
}}
\begin{center}
\begin{tikzpicture}
\begin{axis}[exp_chart, ymax=1.2]
\addplot[color=red, domain=0:4, samples=5, only marks] {geom(x,0.5)};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
答案1
您目前only marks
在选项中拥有\addplot
,这意味着只绘制标记,就像散点图一样。如果删除,only marks
您将得到一条没有标记的实线。如果用 替换,mark=*
您将获得标记和线。
因此,\addplot[color=red, domain=0:4, samples=5, mark=*] {geom(x,0.5)};
给出
顺便注意一下,width=18cm
您获得的图表比文本块更宽,因此您会收到过满的水平盒子警告。
\documentclass[oneside,final,14pt]{extreport}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\tikzset{
declare function={
geom(\x,\p) = \p * (1-\p)^(\x);
},
}
\pgfplotsset{exp_chart/.style={
height=9cm, width=18cm,
xmin=0, xmax=4.5,
ymin=-0.05,
ymax=1.2,
xlabel={$x$},
ylabel={$f(x)$},
xtick = {0.5, 1, ..., 4.5},
ytick = {0.5, 1},
axis line style = thick,
axis lines = middle,
enlargelimits=false,
}}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[exp_chart, ymax=1.2]
\addplot[color=red, domain=0:4, samples=5, mark=*] {geom(x,0.5)};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}