TikZ:流程图缺失部分

TikZ:流程图缺失部分

有谁能帮我解决这个 tikz 流程图中缺少文本和线条的问题吗?我试过自己解决,但现在陷入困境。

原始图像

原始图像

我的代码

    \documentclass{standalone}
    \usepackage[utf8]{inputenc}
    \usepackage[brazil]{babel}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{graphicx}
    \usepackage{tikz}
    \usepackage{pgfplots}
    \pgfplotsset{width=10cm,compat=1.9}
    % \usepackage[margin=0.5in]{geometry}
    \usetikzlibrary{positioning} % permite-

    \begin{document}
        \begin{tikzpicture}
        [node distance = 1cm, auto,font=\footnotesize,
        every node/.style={node distance=2.5cm},
        comment/.style={rectangle, inner sep= 5pt, text width=4cm, node distance=0.25cm, font=\scriptsize\sffamily},
        bloco01/.style={rectangle, draw, fill=black!10, inner sep=5pt, text width=2cm, text badly centered, minimum height=1.2cm, font=\bfseries\footnotesize\sffamily}, 
        bloco02/.style={rectangle, draw, inner sep=5pt, text width=2cm, text badly centered, minimum height=1cm, font=\bfseries\footnotesize\sffamily},
        bloco03/.style={rectangle, draw=white, inner sep=5pt, text width=3cm, align=left, minimum height=1cm, font=\bfseries\footnotesize\sffamily}]    


        % Draw blocks
        \node [bloco01] (conhecimento) {Conhecimento da realidade};
        \node [bloco01, right=1cm of conhecimento] (determinacao) {Determinação dos objetivos};
        \node [bloco01, right=2cm, below of=determinacao] (conteudos) {Seleção e organização dos conteúdos};
        \node [bloco01, below of=conteudos] (procedimentos) {Seleção e organização dos procedimentos de ensino};
        \node [bloco01, below of=procedimentos] (recursos) {Seleção dos recursos};
        \node [bloco01, below of=recursos] (selecao) {Seleção dos procedimentos de avaliação};
        \node [bloco01, left=2cm, below of=selecao, double] (estruturacao) {Estruturação do Plano de ensino};       
        \node [bloco01, left=2cm of estruturacao] (plano) {Plano de ação};
        \node [bloco03, above=2pt of plano] (fase) {FASE DE \\ DESENVOLVIMENTO};
        \node [bloco02, left=2cm, above of=plano] (avaliacao) {Avaliação};
        \node [bloco02, left=2cm, above of=avaliacao] (feedback) {Feedback};    
        \node [bloco02, right=2cm, above of=feedback] (replanejamento) {Replanejamento};    

        % Draw the links between blocks
        \path[-latex,thick]
        (conhecimento) edge (determinacao)
        (conteudos) edge (procedimentos)
        (procedimentos) edge (recursos)
        (recursos) edge (selecao)
        (estruturacao) edge (plano);

        \draw[-latex,thick] (determinacao) -| (conteudos);
        \draw[-latex,thick] (selecao) |- (estruturacao);
        \draw[-latex,thick] (plano) -| (avaliacao);


        \draw[-,thick] (avaliacao.west) -|  (feedback); 
        \draw[-latex,thick] (feedback.north) |- (replanejamento.west);

        \draw[dashed,thick] (determinacao) edge (estruturacao);
        \draw[dashed,thick] (replanejamento.east) edge (avaliacao.east);    

        \end{tikzpicture} 

        % Original image: 
        % http://www.catolicavirtual.br/conteudos/pos_graduacao/ead/uea6/imagens/3_image004.jpg

    \end{document}

由此 我的结果

答案1

简单的技巧是将 设为 的右侧的“虚拟坐标” (replanejamento.east),然后将 替换为 ,edge这样-| ++(10mm,0) |-就可以得到所需的结果。请10mm根据需要更改 。

添加沿路径放置的节点。有关详细信息,请查看下面的代码。请根据需要更改虚拟文本。

(我只是删除了代码中一些不需要的包,并重新格式化了你的样式,以便它们更容易阅读。请注意,下面的图片是带有注释babel包的结果,因为我没有安装巴西语言。)

\documentclass[border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tikz}
    \usetikzlibrary{positioning} % permite-

\begin{document}
    \begin{tikzpicture}[
        >=latex,
        node distance=1cm,
        auto,
        font=\footnotesize,
        every node/.style={
            node distance=2.5cm,
        },
        comment/.style={
            rectangle,
            inner sep=5pt,
            text width=4cm,
            node distance=0.25cm,
            font=\scriptsize\sffamily,
        },
        bloco01/.style={
            rectangle,
            draw,
            fill=black!10,
            inner sep=5pt,
            text width=2cm,
            text badly centered,
            minimum height=1.2cm,
            font=\bfseries\footnotesize\sffamily,
        },
        bloco02/.style={
            rectangle,
            draw,
            inner sep=5pt,
            text width=2cm,
            text badly centered,
            minimum height=1cm,
            font=\bfseries\footnotesize\sffamily,
        },
        bloco03/.style={
            rectangle,
            draw=white,
            inner sep=5pt,
            text width=3cm,
            align=left,
            minimum height=1cm,
            font=\bfseries\footnotesize\sffamily,
        },
    ]

        % Draw blocks
        \node [bloco01] (conhecimento) {Conhecimento da realidade};
        \node [bloco01, right=1cm of conhecimento] (determinacao) {Determinação dos objetivos};
        \node [bloco01, right=2cm, below of=determinacao] (conteudos) {Seleção e organização dos conteúdos};
        \node [bloco01, below of=conteudos] (procedimentos) {Seleção e organização dos procedimentos de ensino};
        \node [bloco01, below of=procedimentos] (recursos) {Seleção dos recursos};
        \node [bloco01, below of=recursos] (selecao) {Seleção dos procedimentos de avaliação};
        \node [bloco01, left=2cm, below of=selecao, double] (estruturacao) {Estruturação do Plano de ensino};
        \node [bloco01, left=2cm of estruturacao] (plano) {Plano de ação};

    % changed alignment. Now the text starts at the left end of the below node
        \node [
            bloco03,
            above=2pt of plano.north west,
            anchor=south west,
            inner xsep=0pt,
        ] (fase) {FASE DE \\ DESENVOLVIMENTO};

        \node [bloco02, left=2cm, above of=plano] (avaliacao) {Avaliação};
        \node [bloco02, left=2cm, above of=avaliacao] (feedback) {Feedback};
        \node [bloco02, right=2cm, above of=feedback] (replanejamento) {Replanejamento};

        % Draw the links between forces
        \path [-latex,thick]
            (conhecimento) edge (determinacao)
            (conteudos) edge (procedimentos)
            (procedimentos) edge (recursos)
            (recursos) edge (selecao)
            (estruturacao) edge (plano);

        \draw [->,thick] (determinacao) -| (conteudos);
        \draw [->,thick] (selecao) |- (estruturacao);
        \draw [->,thick] (plano) -| (avaliacao);


        \draw [-,thick] (avaliacao.west) -|  (feedback);
        \draw [->,thick] (feedback.north) |- (replanejamento.west);

        \draw [dashed,thick] (determinacao) edge
                node [align=right,swap] {test 1 \\ test 2}
            (estruturacao);
%        \draw [dashed,thick] (replanejamento.east) edge (avaliacao.east);
        \draw [dashed,thick] (replanejamento.east)
            -| ++(10mm,0) |-
                node [pos=0.25,align=left] {test 1 \\ test 2}
            (avaliacao.east);

    \end{tikzpicture}

    % Original image:
    % http://www.catolicavirtual.br/conteudos/pos_graduacao/ead/uea6/imagens/3_image004.jpg

\end{document}

该图显示了上述代码的结果

答案2

尝试绘制更简洁的代码(利用 tikz 库chainsquotes):

\documentclass[tikz,
               border=2mm]{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[brazil]{babel}
    \usetikzlibrary{chains, positioning, quotes} 

\makeatletter
\tikzset{suspend join/.code={\def\tikz@after@path{}}}
\makeatother

\begin{document}
    \begin{tikzpicture}[
 arrow/.style = {thick,-latex},
node distance = 8mm and -1mm,
        auto,
        font = \footnotesize\bfseries\sffamily,
 start chain = going below,
bloco/.style = {rectangle,
                draw,
                text width=22mm, minimum height=11mm,
                inner sep=2mm,
                align=flush center,
                on chain,
                join=by arrow},
                        ]
% Draw blocks
    \begin{scope}[every node/.append style={bloco, fill=gray!30}]
\node (conhecimento)    {Conhecimento da realidade};
\node (determinacao)    [right=1cm of conhecimento]
                        {Determinação dos objetivos};
%
\node (conteudos)       [below right= of determinacao,
                         suspend join] 
                        {Seleção e organização dos conteúdos};
\node (procedimentos)   {Seleção e organização dos procedimentos de ensino};
\node (recursos)        {Seleção dos recursos};
\node (selecao)         {Seleção dos procedimentos de avaliação};
%
\node (estruturacao)    [below left=of selecao, 
                         suspend join] 
                        {Estruturação do Plano de ensino};
\node (plano)           [left=2cm of estruturacao] 
                        {Plano de ação};
    \end{scope}
    \begin{scope}[every node/.append style={%
                    bloco, fill=white, text width=18mm, suspend join}]
\node [above=0mm of plano, draw=none, align=left]
                        {FASE DE \\ DESENVOLVIMENTO};
\node (avaliacao)       [above left =of plano]      {Avaliação};
\node (feedback)        [above left =of avaliacao]  {Feedback};
\node (replanejamento)  [above right=of feedback]  {Replaneja\-mento};
    \end{scope}
% Draw the links which were not establish by join
\draw [arrow] (determinacao) -| (conteudos);
\draw [arrow] (selecao) |- (estruturacao);
\draw [arrow] (plano) -| (avaliacao);
\draw [arrow,-]     (avaliacao.west) -|  (feedback);
\draw [arrow] (feedback.north) |- (replanejamento.west);
%
\draw [dashed,thick] (determinacao) edge[align=left,"test 1 \\ test 2"] (estruturacao);
\draw [dashed,thick] (replanejamento.east) -- ++(10mm,0) |-
                node [pos=0.25,align=left] {test 1 \\ test 2}
                    (avaliacao.east);
    \end{tikzpicture}
\end{document}

在上面的 MWE 中,节点之间的距离由 控制node distance=8mm and -1mm。这样,节点之间的所有距离(一个节点除外)都相同。节点根据使用的填充进行分组。对于所有直线连接,都使用包join中的工具。为此,在文档序言中chains添加了暂停定义。suspend join

在此处输入图片描述

相关内容