Aí está meu 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}
e lá está minha figura
Quero modificar duas coisas nesta figura: (1) primeiro (e o mais importante) não quero esse pseudo tick "10^-2" no topo da figura, gostaria de ter números decimais (0,002, 0,004, 0,006) como rótulo y. (2) em segundo lugar (isso é menos importante) eu gostaria de ter uma barra de erro apenas para x=-4 e x=4 (por exemplo).
Responder1
Observe pelos comentários que se você tivesse feito uma das perguntas individuais (ou ambas em postagens separadas), provavelmente teria obtido resposta(s) para sua(s) pergunta(s) no dia em que fez a pergunta.
Para o primeiro problema, use scaled y ticks=false
. Isso é necessário porque você zera o tickrótuloscom yticklabels={,,}
(a propósito, eu preferiria yticklabels=\empty
: funcionará independentemente de quantos ticks estiverem no gráfico), mas os próprios ticks ainda estão colocados, o que significa que a escala pode estar em vigor.
Se você quiser que as marcas de seleção desapareçam, basta usar ytick=empty
no lugar de scaled y ticks=false,yticklabels={,,}
.
Para as barras de erro, a solução rápida e suja é remover as entradas indesejadas da tabela. Mas presumo que seu caso de uso real tenha muito mais entradas. Podemos criar uma nova coluna (chamada error-proc
) na tabela \exp
com
\pgfplotstablecreatecol[
<assignments>
]
{error-proc}{\exp}
A <assignments>
parte aqui é focada em capturar apenas a primeira e a última linhas error
e copiar apenas esses elementos em nossa nova coluna 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}
Depois é só mudar y error=error
para y error=error-proc
no seu \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}