pgfplots dateplot:如何添加最佳拟合线

pgfplots dateplot:如何添加最佳拟合线

这是我的情节:

我的情节

我想添加与第一段直线(从 16:23 到 16:33)相对应的最佳拟合线。该线的方程为 y = 0.022x + 19.018。这是我的尝试

\documentclass{standalone}

    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath,amssymb,amsfonts,systeme} 
    \usepackage{color}                    
    \usepackage{array}
    \usepackage{tikz}
    \usepackage{tkz-euclide}
    \usetkzobj{all}
    \usetikzlibrary{arrows.meta}
    \usepackage{siunitx}
    \usepackage{pgfplots}
    \usepgfplotslibrary{dateplot, statistics}
    \usepackage{filecontents}

\begin{filecontents*}{ab.txt}
date, value
2019-04-17 16:23:56, 18.94
2019-04-17 16:24:01, 18.96
2019-04-17 16:24:06, 18.97
2019-04-17 16:24:11, 18.98
2019-04-17 16:24:16, 18.99
2019-04-17 16:24:21,    19
2019-04-17 16:24:26, 19.01
2019-04-17 16:24:31, 19.01
2019-04-17 16:24:36, 19.02
2019-04-17 16:24:41, 19.03
2019-04-17 16:24:46, 19.03
2019-04-17 16:24:51, 19.04
2019-04-17 16:24:56, 19.04
2019-04-17 16:25:02, 19.05
2019-04-17 16:25:07, 19.05
2019-04-17 16:25:11, 19.05
2019-04-17 16:25:16, 19.06
2019-04-17 16:25:21, 19.06
2019-04-17 16:25:27, 19.06
2019-04-17 16:25:32, 19.07
2019-04-17 16:25:37, 19.07
2019-04-17 16:25:42, 19.07
2019-04-17 16:25:46, 19.08
2019-04-17 16:25:52, 19.08
2019-04-17 16:25:57, 19.08
2019-04-17 16:26:02, 19.09
2019-04-17 16:26:07, 19.09
2019-04-17 16:26:12, 19.09
2019-04-17 16:26:17, 19.09
2019-04-17 16:26:22,  19.1
2019-04-17 16:26:27,  19.1
2019-04-17 16:26:32,  19.1
2019-04-17 16:26:37, 19.11
2019-04-17 16:26:42, 19.11
2019-04-17 16:26:47, 19.11
2019-04-17 16:26:52, 19.11
2019-04-17 16:26:57, 19.12
2019-04-17 16:27:02, 19.12
2019-04-17 16:27:07, 19.12
2019-04-17 16:27:12, 19.12
2019-04-17 16:27:17, 19.12
2019-04-17 16:27:22, 19.13
2019-04-17 16:27:27, 19.13
2019-04-17 16:27:32, 19.13
2019-04-17 16:27:37, 19.13
2019-04-17 16:27:42, 19.14
2019-04-17 16:27:47, 19.14
2019-04-17 16:27:52, 19.14
2019-04-17 16:27:57, 19.14
2019-04-17 16:28:02, 19.14
2019-04-17 16:28:07, 19.15
2019-04-17 16:28:12, 19.15
2019-04-17 16:28:17, 19.15
2019-04-17 16:28:22, 19.15
2019-04-17 16:28:27, 19.16
2019-04-17 16:28:32, 19.16
2019-04-17 16:28:37, 19.16
2019-04-17 16:28:42, 19.16
2019-04-17 16:28:47, 19.16
2019-04-17 16:28:52, 19.17
2019-04-17 16:28:57, 19.17
2019-04-17 16:29:02, 19.17
2019-04-17 16:29:07, 19.17
2019-04-17 16:29:12, 19.17
2019-04-17 16:29:17, 19.17
2019-04-17 16:29:22, 19.17
2019-04-17 16:29:27, 19.18
2019-04-17 16:29:32, 19.18
2019-04-17 16:29:37, 19.18
2019-04-17 16:29:42, 19.18
2019-04-17 16:29:47, 19.18
2019-04-17 16:29:52, 19.19
2019-04-17 16:29:57, 19.19
2019-04-17 16:30:02, 19.19
2019-04-17 16:30:07, 19.19
2019-04-17 16:30:12,  19.2
2019-04-17 16:30:17,  19.2
2019-04-17 16:30:22,  19.2
2019-04-17 16:30:27,  19.2
2019-04-17 16:30:32,  19.2
2019-04-17 16:30:37,  19.2
2019-04-17 16:30:42,  19.2
2019-04-17 16:30:47, 19.21
2019-04-17 16:30:52, 19.21
2019-04-17 16:30:57, 19.21
2019-04-17 16:31:02, 19.21
2019-04-17 16:31:07, 19.21
2019-04-17 16:31:12, 19.21
2019-04-17 16:31:17, 19.21
2019-04-17 16:31:22, 19.22
2019-04-17 16:31:27, 19.22
2019-04-17 16:31:32, 19.22
2019-04-17 16:31:37, 19.22
2019-04-17 16:31:42, 19.23
2019-04-17 16:31:47, 19.23
2019-04-17 16:31:52, 19.23
2019-04-17 16:31:57, 19.23
2019-04-17 16:32:02, 19.23
2019-04-17 16:32:07, 19.23
2019-04-17 16:32:12, 19.23
2019-04-17 16:32:17, 19.23
2019-04-17 16:32:22, 19.24
2019-04-17 16:32:27, 19.24
2019-04-17 16:32:32, 19.24
2019-04-17 16:32:37, 19.24
2019-04-17 16:32:42, 19.24
2019-04-17 16:32:47, 19.24
2019-04-17 16:32:52, 19.25
2019-04-17 16:32:57, 19.25
2019-04-17 16:33:02, 19.25
2019-04-17 16:33:07, 19.25
2019-04-17 16:33:12, 19.25
2019-04-17 16:33:17, 19.25
2019-04-17 16:33:22, 19.25
2019-04-17 16:33:27, 19.26
2019-04-17 16:33:32, 19.26
2019-04-17 16:33:37, 19.26
2019-04-17 16:33:42, 19.28
2019-04-17 16:33:47, 19.45
2019-04-17 16:33:52, 19.73
2019-04-17 16:33:58, 20.18
2019-04-17 16:34:02, 20.44
2019-04-17 16:34:07, 20.77
2019-04-17 16:34:15, 21.11
2019-04-17 16:34:17, 21.19
2019-04-17 16:34:22,  21.3
2019-04-17 16:34:27,  21.4
2019-04-17 16:34:32, 21.51
2019-04-17 16:34:37, 21.58
2019-04-17 16:34:42, 21.65
2019-04-17 16:34:47,  21.7
2019-04-17 16:34:52, 21.75
2019-04-17 16:34:57, 21.79
2019-04-17 16:35:02, 21.81
2019-04-17 16:35:07, 21.84
2019-04-17 16:35:12, 21.87
2019-04-17 16:35:17, 21.89
2019-04-17 16:35:22, 21.91
2019-04-17 16:35:27, 21.93
2019-04-17 16:35:32, 21.94
2019-04-17 16:35:38, 21.96
2019-04-17 16:35:42, 21.97
2019-04-17 16:35:47, 21.99
2019-04-17 16:35:52,    22
2019-04-17 16:35:58, 22.01
2019-04-17 16:36:03, 22.02
2019-04-17 16:36:08, 22.03
2019-04-17 16:36:13, 22.04
2019-04-17 16:36:17, 22.05
2019-04-17 16:36:23, 22.06
2019-04-17 16:36:28, 22.07
2019-04-17 16:36:33, 22.08
2019-04-17 16:36:38, 22.09
2019-04-17 16:36:43, 22.09
2019-04-17 16:36:48,  22.1
2019-04-17 16:36:53, 22.11
2019-04-17 16:36:58, 22.12
2019-04-17 16:37:03, 22.12
2019-04-17 16:37:08, 22.13
2019-04-17 16:37:13, 22.14
2019-04-17 16:37:18, 22.15
2019-04-17 16:37:23, 22.15
2019-04-17 16:37:28, 22.16
2019-04-17 16:37:33, 22.16
2019-04-17 16:37:38, 22.17
2019-04-17 16:37:43, 22.17
2019-04-17 16:37:48, 22.18
2019-04-17 16:37:53, 22.18
2019-04-17 16:37:58, 22.19
2019-04-17 16:38:03, 22.19
2019-04-17 16:38:08,  22.2
2019-04-17 16:38:13,  22.2
2019-04-17 16:38:18,  22.2
2019-04-17 16:38:23, 22.21
2019-04-17 16:38:28, 22.21
2019-04-17 16:38:33, 22.22
2019-04-17 16:38:38, 22.23
2019-04-17 16:38:43, 22.22
2019-04-17 16:38:48, 22.23
2019-04-17 16:38:53, 22.23
2019-04-17 16:38:58, 22.24
2019-04-17 16:39:03, 22.24
2019-04-17 16:39:08, 22.24
2019-04-17 16:39:13, 22.25
2019-04-17 16:39:18, 22.25
2019-04-17 16:39:23, 22.25
2019-04-17 16:39:28, 22.26
2019-04-17 16:39:33, 22.26
2019-04-17 16:39:41, 22.26
2019-04-17 16:39:43, 22.26
2019-04-17 16:39:48, 22.27
2019-04-17 16:39:53, 22.27
2019-04-17 16:39:58, 22.27
2019-04-17 16:40:03, 22.27
2019-04-17 16:40:08, 22.28
2019-04-17 16:40:13, 22.28
2019-04-17 16:40:18, 22.28
2019-04-17 16:40:23, 22.28
2019-04-17 16:40:28, 22.29
2019-04-17 16:40:33, 22.29
2019-04-17 16:40:38,  22.3
2019-04-17 16:40:43, 22.29
2019-04-17 16:40:48,  22.3
2019-04-17 16:40:53,  22.3
2019-04-17 16:40:58,  22.3
2019-04-17 16:41:03,  22.3
2019-04-17 16:41:08, 22.31
2019-04-17 16:41:13, 22.31
2019-04-17 16:41:18, 22.31
2019-04-17 16:41:23, 22.31
2019-04-17 16:41:28, 22.31
2019-04-17 16:41:33, 22.31
2019-04-17 16:41:38, 22.32
2019-04-17 16:41:43, 22.32
2019-04-17 16:41:48, 22.32
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[xlabel=t/s, 
  ylabel=$\theta / \si{\celsius}$,
  grid, grid style=dashed,
   date coordinates in=x, 
   table/col sep=comma, 
   date ZERO=2019-04-17 16:23:56, 
   xticklabel=\hour:\minute, 
   xticklabel style={rotate=90, anchor=near xticklabel},
   ymin=18,
   ymax=23.5,
   xmax=2019-04-17 16:43:56,
   xtick={2019-04-17 16:25:56,2019-04-17 16:27:56,2019-04-17 16:29:56,2019-04-17 16:31:56,2019-04-17 16:33:56,2019-04-17 16:35:56,2019-04-17 16:37:56,
   2019-04-17 16:39:56,2019-04-17 16:41:56},
   extra x ticks={2019-04-17 16:23:56},
   extra y ticks={18,18.5,19.5,20.5,21.5,22.5},
   axis lines = middle,
   set layers,
   axis on top,
   x label style={at={(1,0)},right},
   y label style={at={(0,1)},above},
   style={thick},
   ]
  \addplot+[red,no markers,smooth] table[x=date,y=value] {ab.txt};
  \addplot [yellow] table[x=date,y=value] {0.022*x + 19.018};
  \end{axis}
\end{tikzpicture}
\end{document}

错误信息如下:

! 软件包 pgfplots 错误:无法读取“搜索路径=.”中的表格文件“0.022x + 19.018”。如果您打算提供内联数据:TeX 可能搞砸了您的行尾?尝试“row sep=crcr”并以“\”结束您的行(有关详细信息,请参阅 pgfplotstable 手册)。有关解释,请参阅 pgfplots 软件包文档。输入 H 可立即获得帮助.... ...table[x=date,y=value] {0.022x + 19.018};

你能帮助我吗?

先感谢您

答案1

我没有什么出色的解决方案,但可以得到你想要的。在 Octave 中运行一些数字后,我认为你给出的线性拟合表达式是以分钟为单位的。因此,你可以将和设置xminxmax特定值,并计算轴跨越的分钟数。之后,添加第二个axis环境来绘制线条。这里将xmin=0和设置xmax为第一个轴覆盖的分钟数。请记住,执行此操作时,你需要将两个轴ymin的 /设置ymax为相同。用于hide axis第二个轴,因为你只对情节线感兴趣。

\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot, statistics}
\usepackage{filecontents}

\begin{filecontents*}{ab.txt}
date, value
2019-04-17 16:23:56, 18.94
2019-04-17 16:24:01, 18.96
2019-04-17 16:24:06, 18.97
2019-04-17 16:24:11, 18.98
2019-04-17 16:24:16, 18.99
2019-04-17 16:24:21,    19
2019-04-17 16:24:26, 19.01
2019-04-17 16:24:31, 19.01
2019-04-17 16:24:36, 19.02
2019-04-17 16:24:41, 19.03
2019-04-17 16:24:46, 19.03
2019-04-17 16:24:51, 19.04
2019-04-17 16:24:56, 19.04
2019-04-17 16:25:02, 19.05
2019-04-17 16:25:07, 19.05
2019-04-17 16:25:11, 19.05
2019-04-17 16:25:16, 19.06
2019-04-17 16:25:21, 19.06
2019-04-17 16:25:27, 19.06
2019-04-17 16:25:32, 19.07
2019-04-17 16:25:37, 19.07
2019-04-17 16:25:42, 19.07
2019-04-17 16:25:46, 19.08
2019-04-17 16:25:52, 19.08
2019-04-17 16:25:57, 19.08
2019-04-17 16:26:02, 19.09
2019-04-17 16:26:07, 19.09
2019-04-17 16:26:12, 19.09
2019-04-17 16:26:17, 19.09
2019-04-17 16:26:22,  19.1
2019-04-17 16:26:27,  19.1
2019-04-17 16:26:32,  19.1
2019-04-17 16:26:37, 19.11
2019-04-17 16:26:42, 19.11
2019-04-17 16:26:47, 19.11
2019-04-17 16:26:52, 19.11
2019-04-17 16:26:57, 19.12
2019-04-17 16:27:02, 19.12
2019-04-17 16:27:07, 19.12
2019-04-17 16:27:12, 19.12
2019-04-17 16:27:17, 19.12
2019-04-17 16:27:22, 19.13
2019-04-17 16:27:27, 19.13
2019-04-17 16:27:32, 19.13
2019-04-17 16:27:37, 19.13
2019-04-17 16:27:42, 19.14
2019-04-17 16:27:47, 19.14
2019-04-17 16:27:52, 19.14
2019-04-17 16:27:57, 19.14
2019-04-17 16:28:02, 19.14
2019-04-17 16:28:07, 19.15
2019-04-17 16:28:12, 19.15
2019-04-17 16:28:17, 19.15
2019-04-17 16:28:22, 19.15
2019-04-17 16:28:27, 19.16
2019-04-17 16:28:32, 19.16
2019-04-17 16:28:37, 19.16
2019-04-17 16:28:42, 19.16
2019-04-17 16:28:47, 19.16
2019-04-17 16:28:52, 19.17
2019-04-17 16:28:57, 19.17
2019-04-17 16:29:02, 19.17
2019-04-17 16:29:07, 19.17
2019-04-17 16:29:12, 19.17
2019-04-17 16:29:17, 19.17
2019-04-17 16:29:22, 19.17
2019-04-17 16:29:27, 19.18
2019-04-17 16:29:32, 19.18
2019-04-17 16:29:37, 19.18
2019-04-17 16:29:42, 19.18
2019-04-17 16:29:47, 19.18
2019-04-17 16:29:52, 19.19
2019-04-17 16:29:57, 19.19
2019-04-17 16:30:02, 19.19
2019-04-17 16:30:07, 19.19
2019-04-17 16:30:12,  19.2
2019-04-17 16:30:17,  19.2
2019-04-17 16:30:22,  19.2
2019-04-17 16:30:27,  19.2
2019-04-17 16:30:32,  19.2
2019-04-17 16:30:37,  19.2
2019-04-17 16:30:42,  19.2
2019-04-17 16:30:47, 19.21
2019-04-17 16:30:52, 19.21
2019-04-17 16:30:57, 19.21
2019-04-17 16:31:02, 19.21
2019-04-17 16:31:07, 19.21
2019-04-17 16:31:12, 19.21
2019-04-17 16:31:17, 19.21
2019-04-17 16:31:22, 19.22
2019-04-17 16:31:27, 19.22
2019-04-17 16:31:32, 19.22
2019-04-17 16:31:37, 19.22
2019-04-17 16:31:42, 19.23
2019-04-17 16:31:47, 19.23
2019-04-17 16:31:52, 19.23
2019-04-17 16:31:57, 19.23
2019-04-17 16:32:02, 19.23
2019-04-17 16:32:07, 19.23
2019-04-17 16:32:12, 19.23
2019-04-17 16:32:17, 19.23
2019-04-17 16:32:22, 19.24
2019-04-17 16:32:27, 19.24
2019-04-17 16:32:32, 19.24
2019-04-17 16:32:37, 19.24
2019-04-17 16:32:42, 19.24
2019-04-17 16:32:47, 19.24
2019-04-17 16:32:52, 19.25
2019-04-17 16:32:57, 19.25
2019-04-17 16:33:02, 19.25
2019-04-17 16:33:07, 19.25
2019-04-17 16:33:12, 19.25
2019-04-17 16:33:17, 19.25
2019-04-17 16:33:22, 19.25
2019-04-17 16:33:27, 19.26
2019-04-17 16:33:32, 19.26
2019-04-17 16:33:37, 19.26
2019-04-17 16:33:42, 19.28
2019-04-17 16:33:47, 19.45
2019-04-17 16:33:52, 19.73
2019-04-17 16:33:58, 20.18
2019-04-17 16:34:02, 20.44
2019-04-17 16:34:07, 20.77
2019-04-17 16:34:15, 21.11
2019-04-17 16:34:17, 21.19
2019-04-17 16:34:22,  21.3
2019-04-17 16:34:27,  21.4
2019-04-17 16:34:32, 21.51
2019-04-17 16:34:37, 21.58
2019-04-17 16:34:42, 21.65
2019-04-17 16:34:47,  21.7
2019-04-17 16:34:52, 21.75
2019-04-17 16:34:57, 21.79
2019-04-17 16:35:02, 21.81
2019-04-17 16:35:07, 21.84
2019-04-17 16:35:12, 21.87
2019-04-17 16:35:17, 21.89
2019-04-17 16:35:22, 21.91
2019-04-17 16:35:27, 21.93
2019-04-17 16:35:32, 21.94
2019-04-17 16:35:38, 21.96
2019-04-17 16:35:42, 21.97
2019-04-17 16:35:47, 21.99
2019-04-17 16:35:52,    22
2019-04-17 16:35:58, 22.01
2019-04-17 16:36:03, 22.02
2019-04-17 16:36:08, 22.03
2019-04-17 16:36:13, 22.04
2019-04-17 16:36:17, 22.05
2019-04-17 16:36:23, 22.06
2019-04-17 16:36:28, 22.07
2019-04-17 16:36:33, 22.08
2019-04-17 16:36:38, 22.09
2019-04-17 16:36:43, 22.09
2019-04-17 16:36:48,  22.1
2019-04-17 16:36:53, 22.11
2019-04-17 16:36:58, 22.12
2019-04-17 16:37:03, 22.12
2019-04-17 16:37:08, 22.13
2019-04-17 16:37:13, 22.14
2019-04-17 16:37:18, 22.15
2019-04-17 16:37:23, 22.15
2019-04-17 16:37:28, 22.16
2019-04-17 16:37:33, 22.16
2019-04-17 16:37:38, 22.17
2019-04-17 16:37:43, 22.17
2019-04-17 16:37:48, 22.18
2019-04-17 16:37:53, 22.18
2019-04-17 16:37:58, 22.19
2019-04-17 16:38:03, 22.19
2019-04-17 16:38:08,  22.2
2019-04-17 16:38:13,  22.2
2019-04-17 16:38:18,  22.2
2019-04-17 16:38:23, 22.21
2019-04-17 16:38:28, 22.21
2019-04-17 16:38:33, 22.22
2019-04-17 16:38:38, 22.23
2019-04-17 16:38:43, 22.22
2019-04-17 16:38:48, 22.23
2019-04-17 16:38:53, 22.23
2019-04-17 16:38:58, 22.24
2019-04-17 16:39:03, 22.24
2019-04-17 16:39:08, 22.24
2019-04-17 16:39:13, 22.25
2019-04-17 16:39:18, 22.25
2019-04-17 16:39:23, 22.25
2019-04-17 16:39:28, 22.26
2019-04-17 16:39:33, 22.26
2019-04-17 16:39:41, 22.26
2019-04-17 16:39:43, 22.26
2019-04-17 16:39:48, 22.27
2019-04-17 16:39:53, 22.27
2019-04-17 16:39:58, 22.27
2019-04-17 16:40:03, 22.27
2019-04-17 16:40:08, 22.28
2019-04-17 16:40:13, 22.28
2019-04-17 16:40:18, 22.28
2019-04-17 16:40:23, 22.28
2019-04-17 16:40:28, 22.29
2019-04-17 16:40:33, 22.29
2019-04-17 16:40:38,  22.3
2019-04-17 16:40:43, 22.29
2019-04-17 16:40:48,  22.3
2019-04-17 16:40:53,  22.3
2019-04-17 16:40:58,  22.3
2019-04-17 16:41:03,  22.3
2019-04-17 16:41:08, 22.31
2019-04-17 16:41:13, 22.31
2019-04-17 16:41:18, 22.31
2019-04-17 16:41:23, 22.31
2019-04-17 16:41:28, 22.31
2019-04-17 16:41:33, 22.31
2019-04-17 16:41:38, 22.32
2019-04-17 16:41:43, 22.32
2019-04-17 16:41:48, 22.32
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
% set common options for the two axes, such as y-range
% if you want any scaling, do that here as well
\pgfplotsset{ 
  ymin=18,
  ymax=23.5
  }

\begin{axis}[xlabel=t/s, 
   ylabel=$\theta / \si{\celsius}$,
   grid, grid style=dashed,
   date coordinates in=x, 
   table/col sep=comma, 
   date ZERO=2019-04-17 16:23:56, 
   xticklabel=\hour:\minute, 
   xticklabel style={rotate=90, anchor=near xticklabel},
   xmin=2019-04-17 16:23, % <-- added
   xmax=2019-04-17 16:42, % <-- edited => 19minutes range on axis
   xtick={2019-04-17 16:25:56,2019-04-17 16:27:56,2019-04-17 16:29:56,2019-04-17 16:31:56,2019-04-17 16:33:56,2019-04-17 16:35:56,2019-04-17 16:37:56,
   2019-04-17 16:39:56,2019-04-17 16:41:56},
   extra x ticks={2019-04-17 16:23:56},
   extra y ticks={18,18.5,19.5,20.5,21.5,22.5},
   axis lines = middle,
   set layers,
   axis on top,
   x label style={at={(1,0)},right},
   y label style={at={(0,1)},above},
   style={thick},
   ]
  \addplot+[red,no markers,smooth] table[x=date,y=value] {ab.txt};

  \end{axis}
  \begin{axis}[
    hide axis,
    xmin=0,
    xmax=19, % <-- 19 units range on this axis
    domain=0:10, % plot line for first 10 minutes
    samples=2
    ]
   \addplot [dashed,black] {0.022*x + 19.018};
   \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容