这是我的最小代码
\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)作为 ylabel。 (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}