我在获取进化模型方面遇到了很大问题。我甚至不知道如何开始。
如果有人展示类似的示例代码,我将不胜感激
\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols}
\usetikzlibrary{decorations.pathmorphing,shadows}
\usepackage{xcolor}
\tikzset{
W/.style={
rectangle,
rounded corners=4pt,
draw=black, thin,
text width=10em,
minimum height=3em,
text badly centered, },
P/.style={
circle,
draw=blue!50!black!50,
top color=white,
bottom color=blue!60!black!10,
inner sep=5pt,
text width=1.75cm,
text badly centered,
minimum height=3em,
}
}
\definecolor{vert}{rgb}{0.15 0.4 0.1}
\definecolor{bleu}{rgb}{0.39, 0.58, 0.93}
\begin{document}
\begin{tikzpicture}
\node[P] (p) {P};
\node[W, below= 3cm of p](w) {W};
\draw[transform canvas={xshift=2ex},->] (p.south) -- ++(0,0) -| (w.north);
\draw[transform canvas={xshift=-2ex},->] (w.north) -- ++(0,0) -| (p.south);
\draw[->, dashed,transform canvas={xshift=-2ex},very thick] (w.north) -- ++(0,0) -| (p.south);
\end{tikzpicture}
\\
\begin{tikzpicture}
\node[at={(0,0)},text=bleu]{\bfseries Objaśnienia};
\node[at={(0,0)},above,yscale=-1,scope fading=south,
opacity=0.5,text=bleu]{\bfseries Objaśnienia};
\end{tikzpicture}
\begin{itemize}
\item[] \tikz {\path[circle, top color=white,
bottom color=blue!60!black!10,]
(0,0) -- (1,0) node[above,pos=0.5,text=vert] {P};} -- frakcja populacji P, która się adaptuje
\item[] \tikz {\path[line width=2pt,->,dashed]
(0,0) -- (1,0) node[above,pos=0.5,text=violet] {W};} some text,
$S_i\,\longrightarrow\,T_j$ non radiative transition.
\end{itemize}
\end{document}
答案1
实现这一目标的方法与几乎任何其他软件一样,将其分解为其组件。
主要成分:
首先是圆圈,这很简单:
\draw (0,0) circle (1cm) node {\Huge P};
但是因为我们要将它们互连,所以也许node
更好:
\node [draw=black, circle] at (0cm,0cm) {\Huge P};
哦,不妨将此节点命名为(MyCircle)
,也许再添加一些内容inner sep
以使圆圈变大:
\node [draw=black, circle, inner sep=0.25cm] (MyCircle) {\Huge P};
阴影是一个可以稍后解决的细节。矩形可以类似地绘制:
\node [draw=black, rectangle, inner sep=0.25cm] (MySquare) at (0cm,-2cm) {\Huge W};
也许我们应该通过将圆形和正方形向下移动来增加它们之间的更多空间:
\node [draw=black, rectangle, inner sep=0.25cm] (MySquare) at (0cm,-3cm) {\Huge W};
现在我们可以画出连接两个节点的垂直线了(感谢 percusse):
\draw [red, ->] (MyCircle.-115) -| (MySquare.120);
\draw [blue, ->] (MySquare.55) -| (MyCircle.-60);
得出的结果是:
好的,现在您已经有了该图的主要组成部分:
\begin{tikzpicture}[thick]
\node [draw=black, circle, inner sep=0.25cm] (MyCircle) at (0cm,0cm) {\Huge P};
\node [draw=black, rectangle, inner sep=0.25cm] (MySquare) at (0cm,-3cm) {\Huge W};
\draw [red, ->] (MyCircle.-115) -| (MySquare.120);
\draw [blue, ->] (MySquare.55) -| (MyCircle.-60);
\end{tikzpicture}
水平线
由于水平箭头有相当多的重复,我会使用循环\foreach
来迭代它们。需要决定它们之间的距离。因此,如下所示:
\foreach \y in {-1,-1.25,...,-3.0} {%
\draw [brown,-latex] (1,\y) -- (0,\y);
}%
我把箭头样式改为-latex
:
现在我们可以在左边画出指向另一个方向的箭头:
\foreach \y in {-1,-1.5,...,-3.0} {%
\draw [violet,-latex] (-1,\y) -- (0,\y);
}%
如果您想要更多棕色箭头,我们需要减少它们之间的间距。因此,如下所示:
\foreach \y in {-1,-1.167,...,-3.167} {%
\draw [brown,-latex] (1,\y) -- (0,\y);
}%
\foreach \y in {-1,-1.5,...,-3.0} {%
\draw [violet,-latex] (-1,\y) -- (0,\y);
}%
现在,要添加左侧的数字,我们可以在行的部分使用 a 和node
it 。我们可以使用 来自动确定要放置在其上方的值。因此,使用:midway
above
[count=\i]
\begin{tikzpicture}[thick]
\foreach \y in {-1,-1.167,...,-3.167} {%
\draw [brown,-latex] (1,\y) -- (0,\y);
}%
\foreach [count=\i] \y in {-1,-1.5,...,-3.0} {%
\draw [violet,-latex] (-1,\y) -- (0,\y)
node [midway, above] {\i};
}%
\end{tikzpicture}
我们得到:
现在只需要找到一种方法将它们转换为罗马数字。
将这些碎片放在一个图形中应该会让你距离最终的绘图更近一步。
大括号:
要绘制括号,您应该参考在正文旁边添加大括号,或者众多答案我已在此处发布使用信息\tkzmark
。