
我的問題是我的圖表中有交叉線/箭頭,在搜尋過程中,我剛剛找到了類似的答案這裡這不適合我的問題。也許有人可以幫我解決這個問題。從公司到政府的箭頭必須與中央銀行和銀行之間的箭頭交叉,但以一種人們可以閱讀文字的方式。是否可以將箭頭放在不同的圖層上或其他什麼?
\tikzset{
%Define standard arrow tip
>=stealth',
%Define style for boxes
punkt/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=6.5em,
minimum height=3.5em,
text centered}
}
\begin{tikzpicture}[node distance=1cm, auto, description/.style={fill=white,inner sep=2pt}]
%nodes
\node[punkt] (Banks) {Banks ($B_b$)};
\node[left=4cm of Banks] (dummy1) {};
\node[right=4cm of Banks] (dummy2) {};
\node[punkt, above=4cm of dummy1] (CB) {CB};
\node[punkt, below=4cm of dummy1] (Gov) {Government};
\node[punkt, above=4cm of dummy2] (Firms) {Firms ($F_f$)};
\node[punkt, below=4cm of dummy2] (HH) {HH ($HH_{hh}$)};
\path[->, >=latex, thick]
(Gov.20) edge[] node[below, rotate=48] {\small Bonds} (Banks.220)
(Banks.200) edge[] node[above, rotate=48] {\small Deposits} (Gov.40)
(Firms.250) edge[] node[above, rotate=90] {\small wage, dividends} (HH.110)
(HH.70) edge[] node[below, rotate=90] {\small equity, consumption} (Firms.290)
(Gov.350) edge[] node[below] {\small unempl. benefit} (HH.190)
(HH.170) edge[] node[above] {\small Taxes} (Gov.10)
(CB.325) edge[] node[below, rotate=-50] {\small interest, OSDF} (Banks.160)
(Banks.143) edge[] node[above, rotate=-50] {\small interest, IDL, OMO, OSLF} (CB.345)
(Firms.200) edge[] node[above, rotate=48] {\small principal/interest payments} (Banks.40)
(Banks.20) edge[] node[below, rotate=48] {\small Loans, interest} (Firms.220)
(HH.143) edge[] node[above, rotate=-50] {\small equity} (Banks.345)
(Banks.325) edge[] node[below, rotate=-50] {\small interest, dividends} (HH.160)
(Banks.west) edge[out=200, in=340, looseness=5] node[below] {\small interbank loans} (Banks.east)
(Firms.170) edge[bend right=35] node[above, near end, rotate=60] {\small Taxes} (Gov.120);
\end{tikzpicture}
答案1
我喜歡簡單的解決方案:(1) 繪製交叉邊緣,(2) 繪製一個半透明的白色矩形以使其在背景中淡出,(3) 在其頂部繪製其他內容。
\path[->, >=latex, thick](Firms.170) edge[bend right=35] node[above, near end, rotate=60] {\small Taxes} (Gov.120);
\path[fill=white, opacity=0.8] (-3.2,1) rectangle +(1.5,2);
\path[->, >=latex, thick]
(Gov.20) edge[] node[below, rotate=48] {\small Bonds} (Banks.220)
[...]
(Banks.west) edge[out=200, in=340, looseness=5] node[below] {\small interbank loans} (Banks.east);
答案2
使用該層的另一種方法background
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning}
\usetikzlibrary{backgrounds} %new code
\tikzset{
%Define standard arrow tip
>=stealth,
%Define style for boxes
punkt/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=6.5em,
minimum height=3.5em,
text centered}
}
\begin{document}
\begin{tikzpicture}[node distance=1cm, auto, description/.style={fill=white,inner sep=2pt}]
%nodes
\node[punkt] (Banks) {Banks ($B_b$)};
\node[left=4cm of Banks] (dummy1) {};
\node[right=4cm of Banks] (dummy2) {};
\node[punkt, above=4cm of dummy1] (CB) {CB};
\node[punkt, below=4cm of dummy1] (Gov) {Government};
\node[punkt, above=4cm of dummy2] (Firms) {Firms ($F_f$)};
\node[punkt, below=4cm of dummy2] (HH) {HH ($HH_{hh}$)};
\path[->, >=latex, thick]
(Gov.20) edge[] node[below, rotate=48] {\small Bonds} (Banks.220)
(Banks.200) edge[] node[above, rotate=48] {\small Deposits} (Gov.40)
(Firms.250) edge[] node[above, rotate=90] {\small wage, dividends} (HH.110)
(HH.70) edge[] node[below, rotate=90] {\small equity, consumption} (Firms.290)
(Gov.350) edge[] node[below] {\small unempl. benefit} (HH.190)
(HH.170) edge[] node[above] {\small Taxes} (Gov.10)
(CB.325) edge[] node[fill=white,below, sloped] {\small interest, OSDF} (Banks.160) %new code
(Banks.143) edge[] node[fill=white,above, sloped] {\small interest, IDL, OMO, OSLF} (CB.345) %new code
(Firms.200) edge[] node[above, rotate=48] {\small principal/interest payments} (Banks.40)
(Banks.20) edge[] node[below, rotate=48] {\small Loans, interest} (Firms.220)
(HH.143) edge[] node[above, rotate=-50] {\small equity} (Banks.345)
(Banks.325) edge[] node[below, rotate=-50] {\small interest, dividends} (HH.160)
(Banks.west) edge[out=200, in=340, looseness=5] node[below] {\small interbank loans} (Banks.east);
\begin{scope}[on background layer] %new code
\path[->, >=latex, thick] (Firms.170) edge[bend right=35] node[above, near end, rotate=60] {\small Taxes} (Gov.120);
\end{scope}
\end{tikzpicture}
\end{document}
作用域路徑位於主路徑後面