這是我的最小程式碼
\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}
這是我的身影
我想修改該圖中的兩件事:(1)首先(也是最重要的)我不希望在圖的頂部出現這個偽勾號“10^-2”,我想要有十進制數(0.002, 0.004 , 0.006) 作為y 標籤。 (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}