我想要生成像这样的简单的图:
我尝试了以下方法:
\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}