これが私の最小限のコードです
\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}
そして私の姿がある
この図で 2 つの点を変更したいと思います。(1) まず (そして最も重要な点)、図の上部にある疑似目盛り「10^-2」は不要です。y ラベルとして小数 (0.002、0.004、0.006) を表示したいと思います。(2) 次に (これはそれほど重要ではありませんが)、たとえば x=-4 と x=4 の場合のみエラー バーを表示したいと思います。
答え1
コメントから、どちらかの質問を単独で(または両方を別々の投稿で)尋ねていた場合、質問したその日に質問に対する回答が得られていた可能性が高いことがわかります。
最初の問題では を使用しますscaled y ticks=false
。これは、目盛りをゼロにするために必要です。ラベル(ちなみに、yticklabels={,,}
私はこうすることを好みますyticklabels=\empty
。プロットに目盛りがいくつあっても、これで動作します)ただし、目盛り自体はまだ配置されているため、スケーリングが有効になっている可能性があります。
目盛り自体を消したい場合は、ytick=empty
の代わりにを使用しますscaled y ticks=false,yticklabels={,,}
。
誤差範囲については、テーブルから不要なエントリを削除するのが手っ取り早い解決策です。しかし、実際の使用例では、もっと多くのエントリがあると想定しています。error-proc
テーブルに新しい列( )を作成し\exp
、
\pgfplotstablecreatecol[
<assignments>
]
{error-proc}{\exp}
ここでの部分<assignments>
は、 の最初と最後の行のみを取得しerror
、これらの要素のみを新しい列にコピーすることに重点を置いています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}
次に、コマンドを次のようy error=error
に変更します。y error=error-proc
\addplot
\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}