我想为该图创建一个残差:
\begin{figure}[hbt!]
\centering
\begin{tikzpicture}
\begin{axis}[,width=\textwidth,
axis lines=middle,
grid=major,
xmin=-50, xmax=670,
ymin=18.4, ymax=25.2,
xlabel=$t(s)$,
ylabel=$T(^{\circ} \mathrm{C})$,
tick style={thick},
ticklabel style={font=\footnotesize},
xtick={-50,0,...,650},
ytick={19,20,...,25}, minor ytick={19.5,20.5,...,24.5}
]
\addplot[black,thin,samples=100,domain=-50:625] {0.007303*x+19.8545};
\addplot [blue, thin, only marks,mark=*] coordinates {
(0,20) (60,20.1) (120,20.6) (180,21.2) (240,21.7) (300,22.2) (360,22.5) (420,23.0) (480,23.1) (540,23.8) (600,24.3)
};
\end{axis}
\end{tikzpicture}
\结束{图}
我想要创建的残差必须看起来像这样: 我似乎找不到有关这种特殊残差样式的任何信息,而且由于我对 LaTeX 完全陌生,所以我不知道如何创建这样的东西。
由于我已经发表了这篇文章,我对图表总体上有一些问题,我也希望得到帮助。
答案1
对于残差,一种明显的方法是计算其他程序中的值,并创建一个新的坐标列表,就像对原始数据所做的那样。
pgfplots
如果将数据读入表中,也可以使用 执行此操作pgfplotstable
。如果表名为\MyData
,则可以执行例如
\addplot [mark=*,blue, only marks]
table[
x=x,
y expr={\thisrow{y}-f(\thisrow{x})}
] {\MyData};
f(x)
我定义的函数是
\tikzset{
declare function={
f(\x) = {0.007303*\x+19.8545}; % for convenience
}
}
对于其他问题:
可能有更好的选择,但是这个有效:
xlabel style={at={(xticklabel cs:0.5)},below}, ylabel style={at={(yticklabel cs:0.5)},rotate=90,above},
你可以使用
extra x tick
这个,例如xtick={0,50,...,650}, % <-- start at zero extra x ticks={-50}, % <-- added extra x tick style={grid=none}, % <-- added
您只需
node
在末尾添加一个\addplot
,例如\addplot[black,thin,samples=100,domain=-50:625] {f(x)} node[above left] {$0.007303x+19.8545$};
轴交叉处的刻度标签默认是隐藏的,添加
hide obscured x ticks=false
下面是完整代码。我没有添加残差图的任何样式。它应该位于主图的正下方吗?
\documentclass[border=5mm]{standalone}
\usepackage{pgfplotstable} % <-- pgfplotstable instead of pgfplots (the former loads the latter)
\pgfplotstableread{
x y
0 20
60 20.1
120 20.6
180 21.2
240 21.7
300 22.2
360 22.5
420 23.0
480 23.1
540 23.8
600 24.3
}\MyData
\tikzset{
declare function={
f(\x) = {0.007303*\x+19.8545}; % for convenience
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={$t(s)$},
ylabel={$T\left(^{\circ} \mathrm{C}\right)$},
width=\textwidth,
axis lines=middle,
grid=major,
xmin=-50, xmax=670,
ymin=18.4, ymax=25.2,
xlabel style={at={(xticklabel cs:0.5)},below},
ylabel style={at={(yticklabel cs:0.5)},rotate=90,above},
tick style={thick},
ticklabel style={font=\footnotesize},
xtick={0,50,...,650}, % <-- start at zero
extra x ticks={-50}, % <-- added
extra x tick style={grid=none}, % <-- added
ytick={19,20,...,25},
minor ytick={19.5,20.5,...,24.5},
hide obscured x ticks=false % <-- added
]
\addplot[black,thin,samples=100,domain=-50:625] {f(x)} node[above left] {$0.007303x+19.8545$};
\addplot [blue, thin, only marks,mark=*] table {\MyData};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}
\addplot [mark=*,blue, only marks]
table[
x=x,
y expr={\thisrow{y}-f(\thisrow{x})}
] {\MyData};
\end{axis}
\end{tikzpicture}
\end{document}