答案1
正如一些评论所说,我们首先想看看你自己的尝试。但是,由于此图涉及一些有趣的方面,我将勾勒出一条通往最终图的路径。顺便说一句,这或多或少是绘制图纸的过程。
在哪里可以找到更多
我建议浏览或阅读 Tikz 手册中的教程部分,html的pdf。还查找我正在使用的所有相关 Tikz 命令。
基本思想
我们先来看一下基本思想:
- 画出轴线
- 画出下方的曲线
- 指出你需要注意的点
- 连接下方曲线上方的点
斧头:没什么奇怪的……只是画出来而已。
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0);
\draw[->] (0,0) -- (0,5);
现在,下面的曲线看起来很复杂,但当你理解了 Tikz 的路径概念后就不会了。基本上,你在两点之间画一条线\draw (1,3) -- (4,1);
。要使它弯曲,一种方法是只需--
用替换to[out=,in=]
,并指定出射角和入射角。路径以 开头\draw
,以 结尾;
。所以让我们在这条路径结束之前再做一点操作。node
在最后绘制的坐标后放置一个以放置 T1 标签。node
在起点和终点之间插入两个 s,我们只会使用它们的坐标(A)和(B),并使用 微调它们在这个路径上的位置。请观察路径内[pos=]
掉落的。\
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8] (A) {A} % basically, store coordinates
node[pos=.6] (B) {B} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
我们需要在 (B) 上方添加另一个点 (C),因此我们再添加一个\node
,使用[yshift=]
% ~~~ put a node//coordinate above (B) ~~~
\node (C) at ([yshift=6mm]B) {C};
最后,我们再次用曲线连接(A)、(C)和(B):
% ~~~ connect A, C and B ~~~~~~~~~
\draw (A) to[out=140,in=-70] (C) -- (B);
改进
这些是更改和附加内容:
- 定义一些样式:
crd
用圆圈渲染虚拟节点,ln
对于线 - 记住
coordinate (X)
沿 x 轴的顺序 - 从节点 A、B 和 C 中删除文本并使用
crd
样式 - 用箭头和标签绘制
(label)
- 重新利用(X)计算(B)下的坐标(V4),在(B)下
\node
打勾\draw
对于 shifted arrow
您的行,有几种方法可以做到这一点。 我使用了惰性变体,以下是其他选项:
- 省略箭头
- 使用装饰库
- 在 A 和 B 之间放置一个中间点(如果需要,调整角度)
- ETC。
完整代码
此代码将创建两页(每个 tikzpicture 环境一页)具有调整页面几何形状的图纸。
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
% ~~~ (I) basic ideas ~~~~~~~~~~~~~~~
\begin{tikzpicture}
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0);
\draw[->] (0,0) -- (0,5);
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8] (A) {A} % basically, store coordinates
node[pos=.6] (B) {B} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
% ~~~ put a node//coordinate above (B) ~~~
\node (C) at ([yshift=6mm]B) {C};
% ~~~ connect A, C and B ~~~~~~~~~
\draw (A) to[out=140,in=-70] (C) -- (B);
\end{tikzpicture}
% ~~~ (II) fine print ~~~~~~~~~~~~~~~
\begin{tikzpicture}[ % some self-defined styles
crd/.style={minimum size=1mm, % puts the dots
inner sep=0pt,circle,draw,fill},
ln/.style={blue, line width=1.5pt},
]
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0) coordinate (X);
\draw[->] (0,0) -- (0,5);
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8,crd] (A) {} % basically, store coordinates
node[pos=.6,crd] (B) {} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
% ~~~ put a node//coordinate above (B) ~~~
\node[crd] (C) at ([yshift=6mm]B) {};
% ~~~ connect A, C and B ~~~~~~~~~
\draw[ln,->] (A) to[out=140,in=-70] (C);
\draw[ln] (C) -- (B);
% ~~~ put some label ~~~~~~~~~~~
\draw[<-] (C) -- +(45:15mm) node[anchor=west] {$(V_4, P_4, T_4)$};
% ~~~ perpendicular below points ~~~~~~~
\coordinate (V4) at (B |- X); % projection onto x-axis
\node[yshift=-3mm] at (V4) {$V_4$}; % the label
\draw (V4) -- +(0,.2); % the tick
\end{tikzpicture}
\end{document}