Ahí está mi código mínimo.
\documentclass[a4paper,11pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{float,caption}
\usepackage{microtype}
\usepackage{bbold}
\usepackage{tikz}
\usepackage{subfig}
\usepackage{pgfplots,pgfplotstable}
\pgfplotstableread{
x y error
-4.0 0.0296647842303 0.0291503887869
-3.0 0.0293603640735 0.0141878426016
-2.0 0.0286685720323 0.00649661240084
-1.0 0.0275361528438 0.00210364869319
2.0 0.0266314574388 0.00148277554508
3.0 0.0277962098809 0.00421008334229
4.0 0.0291488821404 0.00849079074145
}{\exp}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-4.5,
xmax=4.5,
ymin=0,
ymax=0.06,
axis background/.style={fill=white},
ylabel=$\delta(q)$,
xlabel=moment $q$,
legend columns=3,
yticklabels={,,}
]
\addplot[color=green,thin,error bars/.cd,y dir=both, y explicit] table[x=x,y=y,y error=error] {\exp};
\end{axis}
\end{tikzpicture}
\end{document}
y ahí está mi figura
Quiero modificar dos cosas en esta figura: (1) primero (y la más importante) no quiero este pseudo tick "10^-2" en la parte superior de la figura, me gustaría tener números decimales (0,002, 0,004, 0,006) como ylabel. (2) en segundo lugar (esto es menos importante) me gustaría tener una barra de error sólo para x=-4 y x=4 (por ejemplo).
Respuesta1
Observe en los comentarios que si hubiera hecho cualquiera de las preguntas individuales (o ambas en publicaciones separadas), lo más probable es que hubiera obtenido respuestas a sus preguntas el día que las hizo.
Para el primer problema, utilice scaled y ticks=false
. Esto es necesario porque pones a cero la marca.etiquetascon yticklabels={,,}
(preferiría yticklabels=\empty
, por cierto: funcionará independientemente de cuántos ticks haya en la trama), pero los ticks en sí todavía están colocados, lo que significa que la escala puede estar vigente.
Si desea que las marcas desaparezcan, simplemente úselas ytick=empty
en lugar de scaled y ticks=false,yticklabels={,,}
.
Para las barras de error, la solución rápida y sucia es eliminar las entradas no deseadas de la tabla. Pero supongo que su caso de uso real tiene muchas más entradas. Podemos crear una nueva columna (llamada error-proc
) en la tabla \exp
con
\pgfplotstablecreatecol[
<assignments>
]
{error-proc}{\exp}
La <assignments>
parte aquí se centra en tomar solo la primera y la última fila error
y copiar solo estos elementos en nuestra nueva columna error-proc
:
\pgfplotstablecreatecol[
create col/assign first/.code={%
\getthisrow{error}\entry
\pgfkeyslet{/pgfplots/table/create col/next content}\entry
},
create col/assign last/.code={%
\getthisrow{error}\entry
\pgfkeyslet{/pgfplots/table/create col/next content}\entry
},
]
{error-proc}{\exp}
Luego simplemente cambie y error=error
a y error=error-proc
su \addplot
comando:
\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=1.12}
\pgfplotstableread{
x y error
-4.0 0.0296647842303 0.0291503887869
-3.0 0.0293603640735 0.0141878426016
-2.0 0.0286685720323 0.00649661240084
-1.0 0.0275361528438 0.00210364869319
2.0 0.0266314574388 0.00148277554508
3.0 0.0277962098809 0.00421008334229
4.0 0.0291488821404 0.00849079074145
}{\exp}
\pgfplotstablecreatecol[
create col/assign first/.code={%
\getthisrow{error}\entry
\pgfkeyslet{/pgfplots/table/create col/next content}\entry
},
create col/assign last/.code={%
\getthisrow{error}\entry
\pgfkeyslet{/pgfplots/table/create col/next content}\entry
},
]
{error-proc}{\exp}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-4.5,
xmax=4.5,
ymin=0,
ymax=0.06,
axis background/.style={fill=white},
ylabel=$\delta(q)$,
xlabel=moment $q$,
yticklabels=\empty,
scaled y ticks=false,
]
\addplot[error bars/.cd,y dir=both, y explicit] table[x=x,y=y,y error=error-proc] {\exp};
\end{axis}
\end{tikzpicture}
\end{document}