我正在尝试使用 TikZ 重新创建以下图表。我无法重新创建标记的曲线$\hat{sigma}=0$
我正在尝试使用 TikZ 重新创建下图。我无法重新创建标记为和 的$\hat{e}=0$
。我知道我可以使用to[in=,out=]
,但结果看起来都不太正确。还有其他方法可以在 TikZ 中绘制我不知道其闭式方程的曲线吗?图表的其余部分对我来说不是问题。
这是我为一条曲线编写的代码:真是一团糟!
\begin{figure}[H]
\centering
\begin{tikzpicture}[domain=0:10]
\draw[->] (0,0) -- (0,8) node[left]{$\pi$};
\draw[->] (0,0) -- (9,0) node[right]{$e$};
\draw (0,3) to[in=5,out=45] (5,4) to[in=45,out=80] (8,8);
\end{tikzpicture}
\caption{Skott model in $e-\sigma$}
\end{figure}
答案1
如果您的目的只是“给出一个想法”,您可以通过命令controls
或plot
规范手动绘制曲线\draw
。
在第一种情况下,你基本上定义了一个贝塞尔曲线分配点,使得第一个点的曲线切线指向第二个点,而最后一个点的切线指向紧接在前一个点。
在第二种情况下,您指定属于曲线的点;您还可以调整最终方面,为选项施加不同的值tension
。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [->] (0,0) -- (8,0);
\draw [->] (0,0) -- (0,8);
\draw [red,thick] (0,2) .. controls (4,2) and (6.5,3) .. (7,7);%<-- This is the first important part
\foreach \xred/\yred in {0/2,4/2,6.5/3,7/7} {
\node [circle,fill=red,draw=none,opacity=0.5,minimum size=4pt,inner sep=0] (node\xred-\yred) at (\xred,\yred) {};
\node [align=center,text width=5cm] (redbox) at (8,1) {Control points for the {\color{red}red} curve.};
\draw [->,red,shorten >=2pt,dashed] (redbox) -- (\xred,\yred);
}
\draw [blue,thick] plot [smooth] coordinates {(0,6) (6,5) (4,3) (6,2)};%<-- This is the other important part
\foreach \xblue/\yblue in {0/6,6/5,4/3,6/2} {
\node [circle,fill=blue,draw=none,opacity=0.5,minimum size=4pt,inner sep=0] (node\xblue-\yblue) at (\xblue,\yblue) {};
\node [align=center,text width=5cm] (bluebox) at (3,8) {These points belong to the ({\color{blue}blue}) curve they define.};
\draw [->,blue,shorten >=2pt,dashed] (bluebox) -- (\xblue,\yblue);
}
\end{tikzpicture}
\end{document}
答案2
看起来唯一的问题是你混淆了in
and的语法out
键的语法。设置out=<angle>
指定切线与曲线的角度离开前一个坐标,而in=<angle>
指定曲线的坐标到达在下一个坐标处。请注意,0 度始终与当前范围内的x
坐标对齐。
代码
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[domain=0:10]
\draw[->] (0,0) -- (0,8) node[left]{$\pi$};
\draw[->] (0,0) -- (9,0) node[right]{$e$};
\draw (0,3) to[in=210,out=0] (5,4) to[in=250,out=30] (8,8);
\end{tikzpicture}
\end{document}