我刚开始使用 pgfplot,实际上我正尝试从带有线性回归的图中获取方程。但是,我正在对数对数图中工作,得到的回归方程是错误的(excel 是正确的)。
我想知道如何纠正它,它应该是:0.734*x + 7e-10,而不是 1*x + 0.42
感谢您的帮助 !
这是 japan.dat
Q P1 P2
1.00E-07 3.01E-07 7.38E-08
1.00E-06 2.95E-06 7.35e-07
1.00E-05 2.95E-05 7.34E-06
和 .tex :
\documentclass[12pt]{article} % this must go first, there are many different classes
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{loglogaxis}[
height=10cm,
width=10cm,
title=Required pumping speed,
xlabel=Q (mbar.L.s$^{-1}$),
ylabel=P (mbar),
ymin=1e-8, ymax=1e-3,
minor y tick num=1,
legend entries={P$_1$(50 L.s$^{-1}$),P$_2$(50 L.s$^{-1}$),$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}]
\addplot[color=red,dashed]
table[x index=0,y index=1] {japan.dat};
\addplot[color=red]
table[x index=0,y index=2] {japan.dat};
\addplot table[
no marks,
red,
x index=0,y index=2,
y={create col/linear regression={y=P2}}]
{japan.dat};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
答案1
您的数据似乎位于对数坐标的一条线上。
因此,我们可以通过简单的数学方法验证回归线:斜率必须是 (y1-y0) / (x1-x0) - 对数坐标。我曾经gnuplot
计算过数据文件中的前两行,得到
print (log(7.35e-7) - log(7.38e-08))/(log(1e-6) - log(1e-7))
0.998230977261152
gnuplot> print log(7.38e-08) - 0.998230977261152 * log(1e-7)
-0.332324732095135
这与 pgfplots 报告的内容一致:
您确定您有正确的数据文件吗?
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{loglogaxis}[
height=10cm,
width=10cm,
title=Required pumping speed,
xlabel=Q (mbar.L.s$^{-1}$),
ylabel=P (mbar),
ymin=1e-8, ymax=1e-3,
minor y tick num=1,
legend entries={P$_1$(50 L.s$^{-1}$),P$_2$(50 L.s$^{-1}$),$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}]
\addplot[color=red,dashed]
table[x index=0,y index=1] {japan.dat};
\addplot[color=red]
table[x index=0,y index=2] {japan.dat};
\addplot[red]
table[x index=0,y index=2,
y={create col/linear regression={y=P2}}]
{japan.dat};
\end{loglogaxis}
\end{tikzpicture}
\end{document}