Tikz 图片中的非常粗的线条没有显示为黑色而是显示为红色 - 为什么?

Tikz 图片中的非常粗的线条没有显示为黑色而是显示为红色 - 为什么?

我认为下面的代码应该添加一条从 (-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 手册) 可以让您更好地控制处理顺序,还可以让您在绘图之外绘图。这种方法的缺点是创建刻度标记和标签的工作量更大。

相关内容