내 최소한의 코드가 있습니다
\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
. 진드기를 0으로 설정하기 때문에 필요합니다.라벨( 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}