平滑 pgfplot 曲线

平滑 pgfplot 曲线

我正在尝试使用该包生成具有平滑曲线的图pgfplots。在命令中设置平滑选项\addplot似乎不会产生任何变化。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b
1,4
2,5
3,1
4,3
\end{filecontents*}


\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [smooth, x=a, y=b, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

锯齿曲线图

答案1

smooth应该给宏赋予参数\addplot

您也可以尝试将张力参数更改为比默认值 0.55 更高的值:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b
1,4
2,5
3,1
4,3
\end{filecontents*}


\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[smooth,tension=0.8] table [x=a, y=b, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

输出:

输出

或者如果您想保留颜色和标记:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b
1,4
2,5
3,1
4,3
\end{filecontents*}


\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[smooth,blue,mark=*] table [x=a, y=b, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

输出

编辑 对于您的实际数据,您可以尝试这样的操作:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\usepackage[gobble=auto]{pythontex}
  
\begin{document}
\begin{pycode}
from numpy import *
from scipy.signal import savgol_filter

data = pd.read_csv('data.csv',sep=',')

x = data.x
y = data.y
## See https://stackoverflow.com/q/20618804/406686
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3

xyhat = list(zip(x,yhat))
savetxt('dataSmooth.csv',xyhat,fmt='%0.5f')
\end{pycode}
 
\begin{tikzpicture}
\begin{axis}
\addplot[smooth] table {dataSmooth.csv};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}
\addplot[smooth] table [col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容