Saltar al contenido

Tufte como eje con pgfplots

Posteriormente a consultar con expertos en el tema, programadores de deferentes ramas y maestros hemos dado con la respuesta al problema y la dejamos plasmada en este post.

Solución:

Puede cambiar sus ejes, marcas y etiquetas para obtener el efecto de eje. Ajustar el color de la trama y el tamaño de las marcas te acerca al estilo general. Las etiquetas se pueden agregar a través de puntos de referencia de nodos en el sistema de coordenadas de datos.

He actualizado mi respuesta anterior para incluir nuevas características de pgfplots y colocó gran parte del código en un solo tuftelike estilo. Muchas gracias a Christian Feuersänger por su continuo trabajo en el pgfplots paquete.

Salida de muestra

documentclassarticle

usepackagepgfplots
pgfplotssetcompat=1.13

pgfkeys/pgfplots/tuftelike/.style=
  semithick,
  tick style=major tick length=4pt,semithick,black,
  separate axis lines,
  axis x line*=bottom,
  axis x line shift=10pt,
  xlabel shift=10pt,
  axis y line*=left,
  axis y line shift=10pt,
  ylabel shift=10pt

begindocument

begintikzpicture[every pin/.style=red!50!black,font=smallsffamily]
  beginaxis[tuftelike,
    xlabel=$L$ [H],
    ylabel=$hatI_DM$ [A],
    enlarge x limits=false,
    xtick=data,
    ytick=0.4,0.6,...,1.801,
    ymin=0.4,ymax=1.8]
    addplot[black,mark=*,mark size=1.5pt]
    coordinates(948e-6,1.61981) (1.5e-3,1.02377) (2e-3,0.769047)
    (2.5e-3,0.614994) (3e-3,0.503511);
    node[coordinate,pin=above right:2007] at (axis cs:1.5e-3,1.02377) ;
  endaxis
endtikzpicture

enddocument

La forma del eje se obtiene usando separate axis lines y el axis ... line* estilos. El desplazamiento del eje se obtiene a través de la axis ... line shift y ...label shift comandos Estos podrían emitirse como un comando común, pero he mantenido el x y y variantes visibles si necesita cambiarlas individualmente. El ajuste del estilo y el color de la marca es del semithick y el tick style.

(El último ytick el valor es 1.801 en vez de 1.8 debido a problemas de redondeo en la aritmética interna).

El código

[every pin/.style=red!50!black,font=smallsffamily]

proporciona el estilo para la etiqueta del punto dado en el gráfico.

Además de cambiar el eje, puede ir un paso más allá y crear lo que Tufte llama “marcos de rango”, donde las líneas del eje solo cubren el rango de los datos. Una forma de hacer esto se describe en Creación de gráficos de barras y diagramas de dispersión estilo Tufte usando PGFPlots en TUGBoat número 34:

documentclassstandalone
usepackagepgfplots
pgfplotssetcompat=newest
begindocument

makeatletter
defpgfplotsdataxmin[email protected]@xmin
defpgfplotsdataxmax[email protected]@xmax
defpgfplotsdataymin[email protected]@ymin
defpgfplotsdataymax[email protected]@ymax
makeatother

pgfplotsset
    range frame/.style=
        tick align=outside,
        axis line style=opacity=0,
        after end axis/.code=axis cs:pgfplotsdataxmin,0) -- (rel axis cs:0,0-
    


begintikzpicture
beginaxis[
    range frame,
    xlabel=$L$ [H],
    ylabel=$hatI_DM$ [A],
    axis lines*=left,
    xtick=data, ymin=0.41
]
  addplot +[black, mark options=fill=black] coordinates (948e-6,1.61981) (1.5e-3,1.02377) (2e-3,0.769047) (2.5e-3,0.614994) (3e-3,0.503511);
endaxis
endtikzpicture
enddocument

Pgfplots permite una personalización muy fina de los ejes gracias a opciones como:

  • x/y/z axis line style
  • x/y/ztick style
  • x/yt/zticklabel style

Básicamente, si cambia los elementos de manera adecuada, puede lograr algo similar. Un humilde intento como prueba de concepto:

documentclass[border=10pt]standalone
usepackagepgfplots
pgfplotssetcompat=1.9

begindocument
begintikzpicture[font=sffamily]
beginaxis[extra description/.code=% to place xlabel and ylabel more arbitrarily
  node[below=7pt] at ([xshift=1.5cm]xticklabel* cs:1)$L$ [H];
  node at ([xshift=-1.5cm]yticklabel* cs:0.5)$hatI_DM$ [A];
  ,
  axis x line=left,
  axis y line=left,
  y axis line style=xshift=-6pt,-,
  x axis line style=yshift=-6pt,-,
  xtick style=yshift=-4pt,black, % black to override the default style
  ytick style=xshift=-4pt,black, % black to override the default style
  xticklabel style=yshift=-5pt,
  yticklabel style=xshift=-5pt,  
  scaled ticks=false,
  ymin=0.5,
  ymax=1.75,
  ytick=0.5,0.75,1,1.25,1.5,1.75,
  yticklabels=0.5,0.75,1,1.25,1.5,1.75,
  xmin=0.9e-3,
  xmax=3.2e-3,
  xtick=0.9e-3,1.4e-3,2e-3,2.6e-3,3.2e-3,
  xticklabels=0.9e-3,1.4e-3,2e-3,2.6e-3,3.2e-3]
  addplot coordinates (948e-6,1.61981) (1.5e-3,1.02377) (2e-3,0.769047) (2.5e-3,0.614994) (3e-3,0.503511);
endaxis
endtikzpicture
enddocument

El resultado:

ingrese la descripción de la imagen aquí

Reseñas y valoraciones

Recuerda comunicar esta noticia si te fue de ayuda.

¡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 *