合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[本文最早写于 2010-10-07 搜狐博客,因为博客搬家了一起搬到了这里。原创文章,转载请注明出处]  gnuplot 中可以利用 smooth 关键字实现数据的平滑,平滑的方法有多种,最主要的几种如下: unique freqency bezier sbezier csplines acsplines 其中 unique 的作用是首先将数据点按照 x 的大小关系排序。如果有多个数据点的 x 值相同的话则取这些数据点的平均值。 freqency 与 unique差不多,也是首先将数据点按照 x 的大小关系排序,但是如果多个数据点的 x 值相同的话则将这些数据点的 y 值叠加。 bezier 用 n 次 的 bezier 曲线连接数据点,n 是数据点的个数。曲线保证过头尾两个数据点,但是中间的数据点一般就不会经过了。这样的曲线足够光滑但不能保证通过所有的数据点。 sbezier 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用 bezier。 csplines 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用自然样条插值。获得的曲线保证通过所有的数据点(unique 处理过的数据点)。 acsplines 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用加权的自然样条插值。加权值通过 using 关键字指定。 加权后的曲线不一定通过所有的数据点。权值越大就越接近数据点。 下面是一个例子,数据文件 “price.dat" # Average PQR and XYZ stock price (in dollars per share) per calendar year 1975 49 162 1976 52 144 1977 67 140 1978 53 122 1979 67 125 1980 46 117 1981 60 116 1982 50 113 1983 66 96 1984 70 101 1985 91 93 1986 133 92 1987 127 95 1988 136 79 1989 154 78 1990 127 85 1991 147 71 1992 146 54 1993 133 51 1994 144 49 1995 158 43 命令: plot "price.dat" using 1:2 with linespoints,"" using 1:2 title "bezier" smooth bezier,"" using 1:2 title "csplines" smooth csplines ![](https://box.kancloud.cn/2016-01-24_56a4233a80ba1.PNG) plot [1975:1995][40:160] "price.dat" using 1:2 with points title "price.dat", "" u 1:2:(1) smooth acsplines title "1", "" using 1:2:(1/50.) smooth acsplines title "1/50", "" using 1:2:(50) smooth acsplines  title "50", "" using 1:2:(1/10000.) smooth acsplines title "1/10000" ![](https://box.kancloud.cn/2016-01-24_56a4233a927b9.PNG)