Dibujo del modelo Kano

Dibujo del modelo Kano

Me preguntaba si alguien puede indicarme la forma más sencilla de dibujar la siguiente imagen. Comencé a usar el entorno de eje del paquete pgfplots como puede ver en mi código a continuación, pero luego me quedé atascado.

¡Os doy las gracias de antemano!

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\begin{axis}[axis lines=middle,axis equal,grid=both]
    \addplot coordinates{(0,0) (5,5) };
\end{axis}

\end{tikzpicture}
\end{document}

Modelo Kano

Respuesta1

No creo que sea necesario su uso pgfplots. Creo que puedes conseguir el efecto que deseas (y algo más fácil) usando solo tikz.

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}
  \coordinate (Q) at (0,0);

  %% put this first even though you can use opacity. 
  \coordinate (indifferent/nw) at (-0.5in,0.5in);
  \fill[gray,opacity=0.20] (indifferent/nw) rectangle ++ (1in,-1in);
  \path (indifferent/nw) ++ (-0.5cm,0.5cm) node[anchor=south east] (indifferent/label) {indifference};
  \draw (indifferent/nw) -- (indifferent/label.base east);

  \draw[arrows=-Stealth,purple]
       (Q) ++ (-2in,0) node [anchor=east,align=center,text width=0.75in]
                            {Need not~fulfilled}
           -- 
           ++ (4in,0)  node [anchor=west,align=center,text width=0.75in]
                            {Need well~fulfilled};
  \draw[arrows=-Stealth,purple]
       (Q) ++ (0,-2in) node [anchor=north,align=center,text width=0.75in]
                            {dissatisfied}
           -- 
           ++ (0,4in)  node [anchor=south,align=center,text width=0.75in]
                            {satisfied};

  \draw[blue,text=blue] 
              (Q) ++ (-2in,-2in) 
                  -- 
                  ++ (4in,4in) node[pos=0.75,anchor=north west] {Performance};


  \draw[red,text=red] 
             (Q) ++ (-2in,0.25cm) .. controls (-0.5cm,0.25cm) and
                                              ( 0.5cm,1.00cm)
                                  ..            
                    (1.25in,2in)
                    node[pos=0.95,anchor=south east] {Excitement};


 \draw[red,text=red]
            (Q) ++ (-1.25in,-2in) .. controls (-0.5cm,-1.00cm) and
                                              ( 0.5cm,-0.45cm)
                                  ..
                   (2in,-0.5cm)
                   node[pos=0.80,anchor=north west] {Basic};


\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí

La idea básica aquí es que \drawlos comandos son en realidad una especie de ruta y nodese pueden definir a lo largo de esas rutas. En particular, podemos especificar la posición de un nodo utilizando pos=<val>el argumento opcional del nodo. El anclaje ayuda a colocar el texto en relación con donde lo queremos. text widthen combinación con alignayuda a que las etiquetas a lo largo del xeje se envuelvan y se centren (yo solía ~juntarlas welly fulfilledpegarlas). Finalmente, el color del texto también se puede especificar usando text=<color>los argumentos opcionales. Finalmente, usé.. controls (<coordinate>) and (<coordinate>) .. construir las curvas. Ahora se me ocurre que debería haber intentado hacerlos un poco más asintóticosactuación, pero te dejo modificar eso.

Respuesta2

Para este tipo de boceto semitécnico podrías considerarMetapostcomo herramienta alternativa. Aquí he seguido mi secuencia preferida para mantener todo bien organizado: definir las rutas (entre sí en la medida de lo posible); Dibújalos; luego agregue las etiquetas.

ingrese la descripción de la imagen aquí

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);
% set a unit scale
u := 1cm;

% define the various paths 
path fulfillment, satisfaction, indifference, performance, excitement, basic;
indifference = unitsquare shifted -(1/2,1/2) scaled 2u;
fulfillment  = (left--right) scaled 3u;
satisfaction = fulfillment rotated 90;
performance  = (xpart point 0 of fulfillment, ypart point 0 of satisfaction) 
            -- (xpart point 1 of fulfillment, ypart point 1 of satisfaction);

excitement = point 0 of fulfillment shifted (0,1/3u) 
             {direction 0 of fulfillment} ..
             {direction 1 of performance}
             point 1 of performance shifted (-1/3u,0);

basic = excitement rotated 180;

% draw the paths
fill      indifference withcolor .9 white;
drawarrow fulfillment  withcolor .5 white;
drawarrow satisfaction withcolor .5 white;
draw      performance  withcolor .67 blue;
draw      excitement   withcolor .67 red;
draw      basic        withcolor .67 green;

% do the labels
verbatimtex
\font\ss=phvr8r\ss
\def\s#1{$\vcenter{\halign{\hfil{##}\hfil\cr#1\crcr}}$}\let\\\cr
etex

label(btex \s{satisfied} etex, point 1 of satisfaction shifted 10 up);
label(btex \s{dissatisfied} etex, point 0 of satisfaction shifted 10 down);

label(btex \s{needs not\\fulfilled}  etex, point 0 of fulfillment shifted 28 left);
label(btex \s{needs well\\fulfilled} etex, point 1 of fulfillment shifted 28 right);

z1 = point 3 of indifference shifted (-u/2,u/2); draw point 3 of indifference -- z1 withcolor .9 white;
label.lft(btex \s{indifference} etex, z1 + 3 up) withcolor .7 white;

label.ulft(btex \s{excitement}  etex, point .9 of excitement)  withcolor .67 red;
label.lrt (btex \s{performance} etex, point .8 of performance) withcolor .67 blue;
label.lrt (btex \s{basic}       etex, point .2 of basic)       withcolor .67 green;

endfig;
end.

Notas

  • El enlace anterior muestra varios enfoques para integrar MP en su flujo de trabajo y tiene enlaces a los manuales.

  • He usado nombres bastante largos para todas las rutas para que puedas seguir lo que se estaba haciendo más fácilmente.

  • Puede cambiar la escala del dibujo ajustando el valor de uen la parte superior.

  • Los caminos rectos tienen un solo segmento, así point 0es el principio y point 1el final.

  • Lo he definido satisfactioncomo una copia fulfillmentgirada 90 grados en el sentido de las agujas del reloj y basiccomo una copia excitementgirada 180. Esto hace que el diagrama sea bonito y simétrico.

  • He definido algunos comandos TeX simples y muy simples que me permiten configurar las etiquetas de manera ordenada. También puedes usar LaTeX, como se explica en el manual. De hecho, con el gmppaquete, o con luatexo contextpuedes incluir código MP como parte de tu archivo fuente LaTeX, como TikZ.

información relacionada