关于作为“tikzpicture”创建的情节的一些问题

关于作为“tikzpicture”创建的情节的一些问题

在此处输入图片描述

上面的tikzpicture图主要是根据以下代码创建的:在 TeX 中创建 xkcd 样式图。我通过反复试验找到了点和标签。有什么更好的选择吗?要创建整个图,我应该使用draw命令吗?

因为我注意到xtick={},ytick={}没有删除轴刻度标记,所以我只在每个轴上放了两个标记,用点 O、S 和 R 隐藏它们。还有其他更好的方法吗?

如您所见,蓝色曲线 y=f(x) 并不像它应该的那样完全平滑。我认为这可能是由于求小数的平方根时不准确造成的。可以解决这个问题吗?

以下是我使用的代码:

\documentclass{standalone}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{pgfplots} 
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\pgfplotsset{every axis/.append style={line width=0.9pt}}
\begin{axis}[
    axis x line=middle,  
    axis y line=middle,   
    ymax=2.2, ylabel=$y$, 
    xlabel=$x$,
    xtick={0,3},
    ytick={0,2},
    xticklabels={},
    yticklabels={}
    ]
  \addplot[domain=0:3, blue, thick]    {sqrt(x^3/27)-sqrt(3*x)+2}; 
  \addplot[domain=0:1.5, red, thick]  {-(x/4+7/8)*sqrt(2)+2}; 
  \addplot[domain=0:3.2, black, thin] {0};
\end{axis}

\node at (-0.25,-0.25) {$O$};
\node at (3.4,0.9) {$P(x,y)$};
\node at (-0.7,2) {$Q(0,ut)$};
\node at (-0.7,5.1) {$R(0,uT)$};
\node at (6.7,-0.3) {$S(L,0)$}; 
\node at (2.4,1.8) {$y=f(x)$};
\node at (4.8,0.4) {$s=vt$};

\fill(0,0) circle (2pt);
\fill[blue](0,5.15) circle (2pt);
\fill[blue](3.2,0.6) circle (2pt);
\fill(0,2) circle (2pt);
\fill[blue] (6.4,0) circle (2pt);
\end{tikzpicture}

\end{document}

编辑:在原点处添加点,并将 QI 添加到 percusse 的代码中

\addplot [only marks,mark=*] coordinates { (0,0) (0,0.76) };
\node[below left] at (axis cs:0,0) {$O$}; 

之前\end{axis}。最后一行应该输入原点,正如 percusse 所评论的那样,但由于某种我不知道的原因,它不起作用。我的初始代码\node at (-0.25,-0.25) {$O$};之后\end{axis}确实输入了 O。

答案1

正如您所猜测的,pgfplots它提供了与 TikZ 类语法的紧密集成。我列出了几种不同类型的操作,以便您可以选择自己喜欢的。

首先,轴坐标系更便于放置物体,您可以(axis cs:xcoord,ycoord)像我使用节点一样使用轴坐标系访问该坐标系。此外,在放置命令P(x,y)结尾之前,您可以将节点放置为 TikZ 路径(它实际上是但仍然不是平凡的方式)。最好将标记放置为单独的图,并提供坐标,然后是标记类型等。最后,我删除了每个标签并通过键添加了自定义刻度标签。;addplotonly marksextra ticks extra tick labels

\documentclass{standalone}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{pgfplots} 
\pgfplotsset{compat=1.7}

\begin{document}

\begin{tikzpicture}
\pgfplotsset{every axis/.append style={line width=0.9pt}}
\begin{axis}[
    axis x line=middle,
    axis y line=middle,
    ymax=2.2,xmax=3.2,
    tick style={draw=none},
    ylabel=$y$, xlabel=$x$,
    xticklabels=\empty,
    yticklabels=\empty,
    extra y ticks={0.76256,2},
    extra y tick labels={ ${Q(0,ut)}$ , ${R(0,uT)}$ },
    extra x ticks={3.0},
    extra x tick labels={ ${S(L,0)}$ },
    ]
  \addplot[domain=0:3, samples=100,blue, thick]  {sqrt(x^3/27)-sqrt(3*x)+2} 
        node[pos=0.3,above right] {$y=f(x)$} node[near end,above right] {$s=vt$}; 
  \addplot[domain=0:1.5, red, thick]  {-(x/4+7/8)*sqrt(2)+2}; 
  \addplot [only marks,mark=*,blue] coordinates { (0,2) (1.5,0.23) (3,0)};
  \node[above=2mm,blue] at (axis cs:1.5,0.23) {${P(x,y)}$};
\end{axis}

\end{tikzpicture}

\end{document}

抱歉0.23,我只是通过视觉猜测而已。

编辑:您也可以通过键增加样本数量samples=n。请参阅相关图表。

在此处输入图片描述

相关内容