⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movingaverage.html

📁 jfreechart1。0。2的api。
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<FONT color="green">304</FONT>         * Creates a new {@link XYSeries} containing the moving averages of one <a name="line.304"></a><FONT color="green">305</FONT>         * series in the &lt;code&gt;source&lt;/code&gt; dataset.<a name="line.305"></a><FONT color="green">306</FONT>         *<a name="line.306"></a><FONT color="green">307</FONT>         * @param source  the source dataset.<a name="line.307"></a><FONT color="green">308</FONT>         * @param series  the series index (zero based).<a name="line.308"></a><FONT color="green">309</FONT>         * @param name  the name for the new series.<a name="line.309"></a><FONT color="green">310</FONT>         * @param period  the averaging period.<a name="line.310"></a><FONT color="green">311</FONT>         * @param skip  the length of the initial skip period.<a name="line.311"></a><FONT color="green">312</FONT>         *<a name="line.312"></a><FONT color="green">313</FONT>         * @return The dataset.<a name="line.313"></a><FONT color="green">314</FONT>         */<a name="line.314"></a><FONT color="green">315</FONT>        public static XYSeries createMovingAverage(XYDataset source, <a name="line.315"></a><FONT color="green">316</FONT>                                                   int series, String name,<a name="line.316"></a><FONT color="green">317</FONT>                                                   double period, double skip) {<a name="line.317"></a><FONT color="green">318</FONT>    <a name="line.318"></a><FONT color="green">319</FONT>                                                   <a name="line.319"></a><FONT color="green">320</FONT>            // check arguments<a name="line.320"></a><FONT color="green">321</FONT>            if (source == null) {<a name="line.321"></a><FONT color="green">322</FONT>                throw new IllegalArgumentException("Null source (XYDataset).");<a name="line.322"></a><FONT color="green">323</FONT>            }<a name="line.323"></a><FONT color="green">324</FONT>    <a name="line.324"></a><FONT color="green">325</FONT>            if (period &lt; Double.MIN_VALUE) {<a name="line.325"></a><FONT color="green">326</FONT>                throw new IllegalArgumentException("period must be positive.");<a name="line.326"></a><FONT color="green">327</FONT>    <a name="line.327"></a><FONT color="green">328</FONT>            }<a name="line.328"></a><FONT color="green">329</FONT>    <a name="line.329"></a><FONT color="green">330</FONT>            if (skip &lt; 0.0) {<a name="line.330"></a><FONT color="green">331</FONT>                throw new IllegalArgumentException("skip must be &gt;= 0.0.");<a name="line.331"></a><FONT color="green">332</FONT>    <a name="line.332"></a><FONT color="green">333</FONT>            }<a name="line.333"></a><FONT color="green">334</FONT>    <a name="line.334"></a><FONT color="green">335</FONT>            XYSeries result = new XYSeries(name);<a name="line.335"></a><FONT color="green">336</FONT>    <a name="line.336"></a><FONT color="green">337</FONT>            if (source.getItemCount(series) &gt; 0) {<a name="line.337"></a><FONT color="green">338</FONT>    <a name="line.338"></a><FONT color="green">339</FONT>                // if the initial averaging period is to be excluded, then <a name="line.339"></a><FONT color="green">340</FONT>                // calculate the lowest x-value to have an average calculated...<a name="line.340"></a><FONT color="green">341</FONT>                double first = source.getXValue(series, 0) + skip;<a name="line.341"></a><FONT color="green">342</FONT>    <a name="line.342"></a><FONT color="green">343</FONT>                for (int i = source.getItemCount(series) - 1; i &gt;= 0; i--) {<a name="line.343"></a><FONT color="green">344</FONT>    <a name="line.344"></a><FONT color="green">345</FONT>                    // get the current data item...<a name="line.345"></a><FONT color="green">346</FONT>                    double x = source.getXValue(series, i);<a name="line.346"></a><FONT color="green">347</FONT>    <a name="line.347"></a><FONT color="green">348</FONT>                    if (x &gt;= first) {<a name="line.348"></a><FONT color="green">349</FONT>                        // work out the average for the earlier values...<a name="line.349"></a><FONT color="green">350</FONT>                        int n = 0;<a name="line.350"></a><FONT color="green">351</FONT>                        double sum = 0.0;<a name="line.351"></a><FONT color="green">352</FONT>                        double limit = x - period;<a name="line.352"></a><FONT color="green">353</FONT>                        int offset = 0;<a name="line.353"></a><FONT color="green">354</FONT>                        boolean finished = false;<a name="line.354"></a><FONT color="green">355</FONT>    <a name="line.355"></a><FONT color="green">356</FONT>                        while (!finished) {<a name="line.356"></a><FONT color="green">357</FONT>                            if ((i - offset) &gt;= 0) {<a name="line.357"></a><FONT color="green">358</FONT>                                double xx = source.getXValue(series, i - offset);<a name="line.358"></a><FONT color="green">359</FONT>                                Number yy = source.getY(series, i - offset);<a name="line.359"></a><FONT color="green">360</FONT>                                if (xx &gt; limit) {<a name="line.360"></a><FONT color="green">361</FONT>                                    if (yy != null) {<a name="line.361"></a><FONT color="green">362</FONT>                                        sum = sum + yy.doubleValue();<a name="line.362"></a><FONT color="green">363</FONT>                                        n = n + 1;<a name="line.363"></a><FONT color="green">364</FONT>                                    }<a name="line.364"></a><FONT color="green">365</FONT>                                }<a name="line.365"></a><FONT color="green">366</FONT>                                else {<a name="line.366"></a><FONT color="green">367</FONT>                                    finished = true;<a name="line.367"></a><FONT color="green">368</FONT>                                }<a name="line.368"></a><FONT color="green">369</FONT>                            }<a name="line.369"></a><FONT color="green">370</FONT>                            else {<a name="line.370"></a><FONT color="green">371</FONT>                                finished = true;<a name="line.371"></a><FONT color="green">372</FONT>                            }<a name="line.372"></a><FONT color="green">373</FONT>                            offset = offset + 1;<a name="line.373"></a><FONT color="green">374</FONT>                        }<a name="line.374"></a><FONT color="green">375</FONT>                        if (n &gt; 0) {<a name="line.375"></a><FONT color="green">376</FONT>                            result.add(x, sum / n);<a name="line.376"></a><FONT color="green">377</FONT>                        }<a name="line.377"></a><FONT color="green">378</FONT>                        else {<a name="line.378"></a><FONT color="green">379</FONT>                            result.add(x, null);<a name="line.379"></a><FONT color="green">380</FONT>                        }<a name="line.380"></a><FONT color="green">381</FONT>                    }<a name="line.381"></a><FONT color="green">382</FONT>    <a name="line.382"></a><FONT color="green">383</FONT>                }<a name="line.383"></a><FONT color="green">384</FONT>            }<a name="line.384"></a><FONT color="green">385</FONT>    <a name="line.385"></a><FONT color="green">386</FONT>            return result;<a name="line.386"></a><FONT color="green">387</FONT>    <a name="line.387"></a><FONT color="green">388</FONT>        }<a name="line.388"></a><FONT color="green">389</FONT>    <a name="line.389"></a><FONT color="green">390</FONT>    }<a name="line.390"></a></PRE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -