我正在尝试使用该包生成具有平滑曲线的图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}