如何使用 PGF-Tikz 绘制下图?

如何使用 PGF-Tikz 绘制下图?

我想使用 PGF-Tikz 绘制以下图表

在此处输入图片描述

使用以下代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}


\begin{document}
    
\begin{tikzpicture}[>=latex]
    
    \begin{axis}[mystyle/.style={semithick},        
        axis x line=center,
        axis y line=center,
        xtick={0,1,2,4,8},
        extra y ticks={3.5},
        extra y tick labels={$\nu_p(\alpha)$},
        xlabel={$n$},
        ylabel={$\nu_2(a_n)$},
        xlabel style={right},
        ylabel style={above},
        x tick label style={anchor=north,below,yshift=0.5ex},
        yticklabel style={red},
        extra y tick style={yticklabel style={color={black}}},
        xmin=-1,
        xmax=10,
        ymin=-5,
        ymax=4.5]
        % Main lines
        \addplot[mystyle,green,thick]coordinates{(0,3.5)(1,0.5)(2,0)};
        \addplot[mystyle,orange,thick]coordinates{(2,0)(4,0)};
        \addplot[mystyle,thick]coordinates{(4,0)(8,2)};
        % vertical dashed lines
        \addplot[mystyle,dashed]coordinates{(8,2)(8,0)};
    \end{axis}
\end{tikzpicture}
    
\end{document}

我得到了以下图片-

在此处输入图片描述

我不知道如何删除垂直轴上的数字,即我想删除-2,2,4,-4垂直轴上的标签或数字。

我还想增加横轴上数字之间的间隙。

请帮忙。

请更正我的代码。

编辑: @Ronald 的以下代码生成以下图表: 在此处输入图片描述

但我想删除horizontal cut垂直轴上的。

答案1

像这样:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{ytick style={draw=none}}


\begin{document}
    
\begin{tikzpicture}[>=latex]
    
    \begin{axis}[mystyle/.style={semithick},        
        axis x line=center,
        axis y line=center,
        xtick={0,1,2,4,8},
        extra x ticks={0,0}, %adds tick
        extra x tick style={ xticklabel style={below right}}, %moves 0 a little to the right so it does not collide the y axis.
        extra y ticks={3.5},
        extra y tick labels={$\nu_p(\alpha)$},
        xlabel={$n$},
        ylabel={$\nu_2(a_n)$},
        xlabel style={right},
        ylabel style={above},
        x tick label style={anchor=north,below,yshift=0.5ex},
        yticklabels={,,} %this here I changed
        extra y tick style={yticklabel style={color={black}}},
        xmin=-1,
        xmax=10,
        ymin=-5,
        ymax=4.5]
        % Main lines
        \addplot[mystyle,green,thick]coordinates{(0,3.5)(1,0.5)(2,0)};
        \addplot[mystyle,orange,thick]coordinates{(2,0)(4,0)};
        \addplot[mystyle,thick]coordinates{(4,0)(8,2)};
        % vertical dashed lines
        \addplot[mystyle,dashed]coordinates{(8,2)(8,0)};
    \end{axis}
\end{tikzpicture}
    
\end{document}

在此处输入图片描述

答案2

您可以通过 删除 y 轴上的刻度ytick=\empty。下面的 MWE 还删除了代码中的所有杂乱内容。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17} % <---


\begin{document}
    \begin{tikzpicture}
\begin{axis}
    axis lines=center, % <---
    xtick={1,2,4,8},
    extra x ticks={0},  % <---
    ticklabel style={fill=white,font=\footnotesize}, % <---    
    ytick=\empty, % <--- remove yticks
    extra y ticks={3.5},
    extra y tick labels={$\nu_p(\alpha)$},
    xlabel={$n$},
    ylabel={$\nu_2(a_n)$},
    xlabel style={right},
    ylabel style={above},
    xmin=-1,
    xmax=10,
    ymin=-4.5,
    ymax=4.5,
    every axis plot post/.append style={thick}% thickness of plotted lines
    ]
    % Main lines
\addplot[green]  coordinates {(0,3.5)(1,0.5)(2,0)};
\addplot[orange] coordinates {(2,0)(4,0)};
\addplot[black]  coordinates {(4,0)(8,2)};
% vertical dashed lines
\draw[dashed] (8,2) -- (8,0);
\end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

编辑: 正如 OP 在评论中所要求的那样,在零点处添加了 x 刻度标签。

相关内容