在 pgf 图中生成最简洁的图形

在 pgf 图中生成最简洁的图形

我想要生成像这样的简单的图:

在此处输入图片描述

我尝试了以下方法:

\usepgflibrary{shapes.geometric}
\usetikzlibrary{calc}
\pgfplotsset{my style/.append style={axis x line=middle, axis y line=
middle, xlabel={$x$}, ylabel={$y$}, axis equal }
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[my style, xticklabels={},extra x ticks ={1} ,yticklabels=none,extra x tick style={xticklabel=\pgfmathprintnumber{\tick}}]
    \addplot[domain=-1:2, red, thick] {x*ln(x)};
    \end{axis}
    \end{tikzpicture}
\end{document}

有没有办法删除刻度,但保留“x=1”处的刻度。此外,我怎样才能使此函数看起来更平滑?

答案1

您可以使用xtick={1}ytick=\empty抑制刻度(x=1 除外),并samples=<number>获得更平滑的路径;在您的示例代码中,无需使用extra x tick style={xticklabel=\pgfmathprintnumber{\tick}}。由于您使用的是对数,因此最好将域设置为非负值(例如domain=0.0001:2,尽管domain=0:2在这种具体情况下也不会引起问题)并使用xmin将 x 轴延伸到负值:

\documentclass{article}
\usepackage{pgfplots}
\usepgflibrary{shapes.geometric}
\usetikzlibrary{calc}
\pgfplotsset{my style/.append style={axis x line=middle, axis y line=
middle, xlabel={$x$}, ylabel={$y$}, axis equal }}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[my style, xtick={1},ytick=\empty,samples=100,xmin=-1]
    \addplot[domain=0.0001:2, red, thick] {x*ln(x)};
    \end{axis}
    \end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

作为Heiko Oberdiek suggests还可以使用domain=0:2和对函数定义进行条件测试来避免值为零的问题(尽管在这个具体例子中没有问题):

\begin{axis}[my style, xtick={1},ytick=\empty,samples=100,xmin=-1]
\addplot[domain=0:2, red, thick] {x == 0 ? 0 : x*ln(x)};
\end{axis}

相关内容