tikz 아래의 틱

tikz 아래의 틱

내 최소한의 코드가 있습니다

\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>중점을 둡니다 .errorerror-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}

여기에 이미지 설명을 입력하세요

관련 정보