非圆形 TikZ 圆弧

非圆形 TikZ 圆弧

我需要帮助在 TikZ 中绘制圆弧,因为我的形状像气球。谢谢!

编辑:我不关心圆弧在哪里,我只希望它是圆形的,并且弧度几乎为 2pi(以指示旋转轴),就像 rmano 在这篇文章中的一条有用评论中所说的那样:为什么用“trig format=rad”给出的角度的弧会产生错误的结果?

我通过将弧度转换为度解决了这个问题。谢谢大家的帮助。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
    standard/.style={
    axis line style = thick,
    trig format=rad,
    enlargelimits,
    axis x line=middle,
    axis y line=middle,
    enlarge x limits=0.15,
    enlarge y limits=0.15,
    every axis x label/.style={at={(current axis.right of origin)},anchor=north west},
    every axis y label/.style={at={(current axis.above origin)},anchor=south east}
    }
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[standard]
\addplot[color=white]{x};
\draw[] (0,0) arc [start angle=0.1*pi, end angle=1.9*pi, radius=1];
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

我还不知道为什么,但当你使用度数而不是弧度时,问题就消失了。当然,axis equal如果你想看到一个完美的圆而不是一个凹凸不平的圆,你就必须使用。

pgfplots 中的圆弧

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
    standard/.style={
    axis line style = thick,
    %trig format=rad,
    enlargelimits,
    axis x line=middle,
    axis y line=middle,
    axis equal,
    enlarge x limits=0.15,
    enlarge y limits=0.15,
    every axis x label/.style={at={(current axis.right of origin)},anchor=north west},
    every axis y label/.style={at={(current axis.above origin)},anchor=south east}
    }
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[standard,disabledatascaling]
\addplot[color=white]{x};
\draw[blue] (axis cs:0,0) arc [radius=1,start angle=0.1*180, end angle=1.9*180];
\end{axis}
\end{tikzpicture}
\end{document}

答案2

我不确定这个问题是否足够清楚。这个问题的数学背景是什么。你是指双纽线还是八曲线?

如果是这样,你应该使用可用的公式,例如https://en.wikipedia.org/wiki/Lemniscate

如果没有,这里有一个使用纯 TikZ 的建议:只需使用controls

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[declare function={angle=30;force=5;}]
\clip (-5,-2.5) rectangle (5,2.5);
\draw[line width=1pt,magenta]
(0,0) .. controls +(180-angle:force) and +(-180+angle:force) .. cycle
(0,0) .. controls +(angle:force) and +(-angle:force) .. cycle;  
\end{tikzpicture}
\end{document}

答案3

像这样?

在此处输入图片描述


\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\pgfplotsset{
    standard/.style={
    trig format=rad,
    axis lines=middle,
    axis equal,
    xmin=-6.2, xmax=6.5, 
    ymin=-6.2, ymax=6.5, 
    }
}
\begin{document}
    \begin{tikzpicture}
\begin{axis}[standard]
\draw[blue, very thick] (0,0) to [out=0.75*pi,in=1.25*pi, loop, min distance=54mm] (0,0);
    \end{axis}
\end{tikzpicture}
\end{document}

附录:
现在我明白了,我可能误解了你的问题。如果你喜欢以负 x 轴为中心画圆,那么解决方案可能很简单,无需使用arc指令:

\documentclass{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \pgfplotsset{standard/.style={trig format=rad, axis lines=middle, axis equal, xmin=-6.2, xmax=6.5, ymin=-6.2, ymax=6.5, } } \begin{document} \begin{tikzpicture} \begin{axis}[standard] \draw[blue, very thick] (-2.7,0) circle[radius=2.7]; \end{axis} \end{tikzpicture} \end{document}

在此处输入图片描述

但是,如果你坚持用 arc7 绘制它,那么你会看到我的问题

相关内容