Saltar al contenido

¿Cómo crear diagramas de Ishikawa (espina de pescado) con LaTeX?

Solución:

Los árboles TikZ probablemente serían el camino a seguir. Sin embargo, las cosas se ponen bastante complicadas desde el principio (ejemplo en Plain con XeTeX):

input tikz
fontfigfont="Myriad Pro" at 8pt
fonttinyfigfont="Myriad Pro" at 6pt
usetikzlibrary{trees,shapes.geometric}
tikzpicture[>=latex,font=figfont,lbl/.style={draw=black,very thin,fill=#1,ellipse}]
  coordinate
    child [grow=right] {
      child {
        child [grow=125] {
          child [grow=left] {node {tinyfigfont Cost of Transport} edge from parent[<-,thin]}
          child {
            child [grow=left] {node {tinyfigfont Access to premises} edge from parent[<-,thin]}
            child {node [lbl=yellow!20] {Transport}}
            child [missing]
          }
          child [missing] edge from parent[<-,thick]
        }
        child [xshift=1cm] {
          child [grow=125] {
            child [grow=left] {node {tinyfigfont Security} edge from parent[<-,thin]}
            child {node [lbl=green!20!yellow] {Premises}}
            child [missing] edge from parent[<-,thick]
          }
          child
          child [grow=-125]
        }
        child [grow=-125] {
          child [grow=left] {node {tinyfigfont Consultation} edge from parent[<-,thin]}
          child {node [lbl=purple!20] {Clients}}
          child [missing] edge from parent[<-,thick]
        }
      }
    };
endtikzpicture
bye

ingrese la descripción de la imagen aquí

Esto podría mejorarse mucho, pero espero poder darte una idea.

Aquí hay una alternativa que usa pdflatex. Lo hice basándome en el ejemplo de https://texwelt.de/fragen/13171/ishikawa-tikz-diagram. Esta es básicamente una forma no iterativa de ese ejemplo con etiquetas de texto incluidas.

Código de látex:

documentclass[tikz]{standalone}
usetikzlibrary{arrows,shapes.geometric,positioning,matrix}
tikzset{
  ishikawa/.style={align=center, inner sep=0pt},
  matter/.style  ={rectangle, minimum size=6mm, very thick, draw=red!70!black!40,
    top color=white, bottom color=red!50!black!20, font=itshape},
  level_1/.style ={ellipse, node distance=60pt, minimum size=6mm, very thick,
    draw=red!50!black!50, top color=white, bottom color=red!50!black!20, font=itshape},
  level_2/.style={rectangle, minimum size=6mm, font=itshape, font=scriptsize}}
tikzset{
  rows/.style 2 args={@/.style={row ##1/.style={#2}},@/.list={#1}},
  cols/.style 2 args={@/.style={column ##1/.style={#2}},@/.list={#1}},
}
begin{document}
begin{tikzpicture}
matrix[
  matrix of nodes,
  row sep=3cm,
  column sep=1cm,
  rows={1,3}{nodes=level_1},
  rows={2}{nodes=matter,anchor=center}
] (m) {
The Cause 1 & The Cause 2 & The Cause 3 & \
         &         &             & The Effect \
The Cause 4  & The Cause 5  & The Cause 6     & \
};
path[very thick,
  toarr/.style={->, shorten <=+0pt, shorten >=+.1cm},
  fromarr/.style={<-, shorten >=+0pt, shorten <=+.1cm}]

  % Mid left to right arrow
  [toarr]
  (m-1-1|-m-2-4) edge (m-2-4)

  % The Cause 1 arrows
  (m-1-1) edge[xslant=-.5]
    coordinate[pos=.3]   (@-1-1-1)
    coordinate[near end] (@-1-1-2) (m-1-1|-m-2-4)
  [fromarr]
  (@-1-1-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-1-1-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm)

  % The Cause 2 arrows
  (m-1-2) edge[xslant=-.5]
    coordinate[pos=.3]   (@-1-2-1)
    coordinate[near end] (@-1-2-2) (m-1-2|-m-2-4)
  [fromarr]
  (@-1-2-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-1-2-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm)

  % The Cause 3 arrows
  (m-1-3) edge[xslant=-.5]
    coordinate[pos=.3]   (@-1-3-1)
    coordinate[near end] (@-1-3-2) (m-1-3|-m-2-4)
  [fromarr]
  (@-1-3-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-1-3-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm)

  % The Cause 4 arrows
  (m-3-1) edge[xslant=.5]
    coordinate[pos=.3]   (@-3-1-1)
    coordinate[near end] (@-3-1-2) (m-3-1|-m-2-4)
  [fromarr]
  (@-3-1-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-3-1-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm)

  % The Cause 5 arrows
  (m-3-2) edge[xslant=.5]
    coordinate[pos=.3]   (@-3-2-1)
    coordinate[near end] (@-3-2-2) (m-3-2|-m-2-4)
  [fromarr]
  (@-3-2-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-3-2-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm)

  % The Cause 6 arrows
  (m-3-3) edge[xslant=.5]
    coordinate[pos=.3]   (@-3-3-1)
    coordinate[near end] (@-3-3-2) (m-3-3|-m-2-4)
  [fromarr]
  (@-3-3-1) edge node[above, level_2]{Subcause 1} ++ (left:2cm)
  (@-3-3-2) edge node[above, level_2]{Subcause 2} ++ (left:2cm);
end{tikzpicture}
end{document}

Resultado:

Para producir el pdf, haga lo siguiente:

pdflatex fishbone.tex

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *