
내 문제는 다이어그램에 선/화살표가 교차하는 부분이 있고 검색 중에 다음과 같은 답변을 찾았다는 것입니다.여기내 문제에는 적합하지 않습니다. 어쩌면 누군가가 나를 도와줄 수도 있습니다. 기업에서 정부로 향하는 화살표는 중앙은행과 은행 사이의 화살표를 교차해야 하지만 텍스트를 읽을 수 있는 방식이어야 합니다. 화살표를 다른 레이어에 배치하는 것이 가능합니까?
\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}
범위가 지정된 경로는 기본 경로 뒤에 있습니다.