我认为下面的代码应该添加一条从 (-1,0) 到 (0,0) 的“非常粗”的黑线,但实际上并没有。如果我将颜色更改为红色,线条会显示出来但不是很粗。关于这张 Tikz 图片,我有两个不明白的地方:(a) 为什么非常粗的线没有显示在轴上,以及 (b) 为什么红线(当我更改颜色时)不会覆盖 (0,0) 处的白色圆圈。困惑 (b) 是我可以忍受的好奇心,但我希望 x < 0 的函数用粗线表示。以下是代码和输出:
\documentclass[11pt,reqno]{amsbook}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
%
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}
[
axis x line =middle,
axis y line= middle,
xmin=-1,
xmax=3,
ymin=0,
ymax=1.2]
\addplot[very thick] coordinates {(-1,0) (0,0) };
\addplot[mark=*, fill=white] coordinates {(0,0)};
\addplot[very thick] coordinates {(0,0.4) (1,0.4)};
\addplot[mark=*] coordinates {(0,0.4)};
\addplot[mark=*,fill=white] coordinates {(1,0.4)};
\draw[dashed] (1,0) -- (1,0.39);
\draw (1.4,0.2) node[right] {$p_X(0;q)$};
\draw[very thick] (-1,0) -- (0,0);
% If I change color to red it shows up, but not 'very thick'.
\addplot[very thick] coordinates {(1,1) (2,1)};
\draw(2,1) node[right]{$F_X(x;q)$};
\addplot[mark=*] coordinates {(1,1)};
\draw[dashed] (1,0.43) -- (1,1);
\draw (1.4,0.7) node[right] {$p_X(1;q)$};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
该线实际上也是用黑色绘制的,但只有 x 轴上方的部分。请参见以下原始代码在 0,0 坐标处放大到 5000% 的屏幕截图:
该线条不如其他线条粗的原因是 pgfplots 没有在绘图区域外绘制线条,因此线条的“底部”缺失。
要显示完整的线条,您可以稍微放大绘图区域,例如放大到ymin=-0.015
。这还会在绘图下方绘制 y 轴线,但幸运的是,您在 0,0 处有一个白色填充圆圈,它隐藏了轴延伸。
\documentclass[11pt,reqno]{amsbook}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
%
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}
[
axis x line =middle,
axis y line= middle,
xmin=-1,
xmax=3,
ymin=-0.015,
ymax=1.2]
\addplot[very thick] coordinates {(-1,0) (0,0) };
\addplot[mark=*, fill=white] coordinates {(0,0)};
\addplot[very thick] coordinates {(0,0.4) (1,0.4)};
\addplot[mark=*] coordinates {(0,0.4)};
\addplot[mark=*,fill=white] coordinates {(1,0.4)};
\draw[dashed] (1,0) -- (1,0.39);
\draw (1.4,0.2) node[right] {$p_X(0;q)$};
\draw[very thick] (-1,0) -- (0,0);
% If I change color to red it shows up, but not 'very thick'.
\addplot[very thick] coordinates {(1,1) (2,1)};
\draw(2,1) node[right]{$F_X(x;q)$};
\addplot[mark=*] coordinates {(1,1)};
\draw[dashed] (1,0.43) -- (1,1);
\draw (1.4,0.7) node[right] {$p_X(1;q)$};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
结果:
\addplot
关于白色圆圈未被线覆盖的另一个问题可能与 pgfplots 处理和绘制命令的顺序有关\draw
,该顺序不一定与代码中的语句列表的顺序相同。由于Raven 的评论建议你也可以在 TikZ 中完全制作这个图(参见第 22 节函数图在里面TikZ 手册) 可以让您更好地控制处理顺序,还可以让您在绘图之外绘图。这种方法的缺点是创建刻度标记和标签的工作量更大。