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) 作為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}

在此輸入影像描述

相關內容