“3D” 中的具有挑战性的剧情

“3D” 中的具有挑战性的剧情

我想知道是否有机会在 LateX 中绘制这个。这要么太有挑战性,要么根本做不到。在这种情况下有什么工具可用?

图片

更清晰的视图:

在此处输入图片描述

在此处输入图片描述

答案1

这利用了矩阵不会倾斜的事实。因此,只能倾斜普通节点。(箭头可以用 倾斜\pgflowlevelsynccm。)

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{positioning,matrix,fit,backgrounds,arrows.meta}
\newcommand{\grf}[3][]{\phantom{\fbox{#3}}\fbox{#2}\\
  \fbox{#3}\phantom{\fbox{#2}}}
\newsavebox\PftA
\newsavebox\PftB
\newsavebox\PftC
\newsavebox\PftD
\newsavebox\PftE
\sbox\PftA{\tikz[scale=0.6,font=\sffamily,transform shape,nodes={fill=white}]{
\node[align=center,draw](A) {Similarity\\ measures};
\node[align=center,right=0.5ex of A,draw]{Aggreation\\ measures};}}
\sbox\PftB{\tikz[scale=0.6,font=\sffamily,transform shape,nodes={fill=white}]{
\node[align=center,draw](A) {Neural\\ Networks};
\node[align=center,below left=0pt of A,draw]{Bayesian\\ Networks};}}
\sbox\PftC{\tikz[scale=0.6,font=\sffamily,transform shape,nodes={fill=white}]{
\node[align=center,draw,minimum height=0.8cm,minimum width=1.5cm](A) {Fuzzy};
\node[align=center,below left=0pt of A,draw,minimum width=1.5cm]{Genetic\\ Algorithms};}}
\sbox\PftD{\tikz[scale=0.6,font=\sffamily,transform shape,nodes={fill=white}]{
\node[align=center,draw](A) {User to user\\ KNN};
\node[align=center,right=0.5ex of A,draw]{Item to item\\ KNN};}}
\begin{document}
\begin{tikzpicture}[%sbox/.style={draw},
  standard cell/.style={align=center,xslant=2/3,transform shape,draw,text
  width=3cm,anchor=center},
  font=\sffamily,node distance=1em and 1em,
  connect/.style args={#1 with #2}{insert path={
  foreach \Anchor in {north west,north east, south west, south east}
  {(#1.\Anchor) -- (#2.\Anchor)}}}]
 \matrix[matrix of nodes,
 nodes={standard cell},
 column sep=-1em,
 row 2/.style={nodes={text width=2cm,node font=\small}},
 row 3/.style={nodes={densely dotted}},
 row 4/.style={nodes={draw=none}},
 row 5/.style={nodes={draw=none}},
 row 6/.style={nodes={minimum height=1.5cm,fill=white}},
 row 7/.style={nodes={minimum height=1.5cm,fill=white}},
 row 8/.style={nodes={minimum height=1.5cm,fill=white}},
 ](mat) {
  {non public\\ commercial\\ database} & &{public database\\ ducks\\ koalas}  &  
    \\[-11em]
  {content based\\ filtering} & {demographic\\ filtering} &  
    {collaborative\\ filtering} &  \\[-10em]
  {\grf{LSI}{SVD} } &  &{Memory based\\ \usebox\PftA}  &  \\[-6em]
  {\usebox\PftB} & &  &  \\[-6em]
  {\usebox\PftC} & &  &  \\[-8em]
  |[minimum height=1.5cm]| Model based & & {Hybrid u2u / i2i \\ \usebox\PftD 
  }  &  \\[-10em]
     & Predictions &  & {Cross validation\\ MAE RMSE\\ Coverage}  \\[-10em]
     & {{\Large Top N}\\ Recommendation} &  & {Cross validation\\ Precision
     Recall\\ ROC Rank metric}  \\
 };

 \path (-3cm,-12.4cm) rectangle (3cm,1cm);
 \begin{scope}[nodes={align=center,xslant=2/3,transform shape},on background
 layer]
  \node[above=2pt of mat-2-1,xshift=-1em] (HF){Hybrid filtering};
  \node[fit=(mat-2-1)(mat-2-3)(HF),draw,inner xsep=1em] (Fit) {};
  \draw[densely dotted,connect/.list={mat-2-3 with mat-3-3,
  mat-7-2 with mat-8-2,mat-6-1 with mat-7-2,mat-6-3 with mat-7-2,
  mat-3-1 with mat-6-1,mat-3-3 with mat-6-3,Fit with mat-3-1}];
  \draw[line width=4mm] (mat-8-4.center) -- ++(3.5,0) |-
  ([yshift=0.4cm]mat-1-3.north) coordinate(aux1);
  \draw[line width=4mm,-{Triangle[scale=0.5]},shorten >=1mm,shorten <=-1mm] (aux1|-mat-1-3.north) -- 
  (aux1|-mat-2-3.south);
  \draw[line width=4mm,-{Triangle[scale=0.5]},shorten >=1mm,shorten <=-1mm] (mat-1-1.north) coordinate(aux2) -- 
  (aux2|-mat-2-1.south);
  \begin{scope}[xslant=2/3]
   \pgflowlevelsynccm
   \draw[line width=4mm,-{Triangle[scale=0.5]},shorten >=4mm] (mat-8-2) -- (mat-8-4);
   \draw[line width=4mm,-{Triangle[scale=0.5]},shorten >=-8mm] (mat-7-2) -- (mat-7-4);
  \end{scope}
 \end{scope}
 \draw[densely dotted] (mat-7-2.south east) --  (mat-8-2.south east)
 (mat-7-2.south west) -- (mat-6-1.south west)
 (mat-7-2.south east) -- (mat-6-3.south east)
 (mat-6-1.south east)  -- (mat-3-1.south east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容