使用JFreeChart在网页上绘制平滑曲线
生活随笔
收集整理的這篇文章主要介紹了
使用JFreeChart在网页上绘制平滑曲线
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在做一個與細胞仿真有關的小軟件時遇到了這個需求,最后選擇了JFreeChart類庫
百度百科關于JFreeChart的簡介
用JFreeChart可以很輕松地畫出很多種類常用的圖形,如餅圖、柱狀圖、折線圖等,而繪制平滑曲線的功能是從版本1.0.7開始才增加的。
繪制平滑曲線的核心代碼如下:
XYSplineRenderer renderer = new XYSplineRenderer();renderer.setBaseShapesVisible(false); //繪制的線條上不顯示圖例,如果顯示的話,會使圖片變得很丑陋renderer.setSeriesPaint(0, Color.GREEN); //設置0號數(shù)據(jù)的顏色。這是手工設置線條顏色的方法renderer.setPrecision(5); //設置精度,大概意思是在源數(shù)據(jù)兩個點之間插入5個點以擬合出一條平滑曲線//create plotNumberAxis xAxis = new NumberAxis("Time(ns)");xAxis.setAutoRangeIncludesZero(false);NumberAxis yAxis = new NumberAxis("Voltage(mv)");yAxis.setAutoRangeIncludesZero(false);XYPlot plot = new XYPlot(createDataset("D:/V.dat"), xAxis, yAxis, renderer);plot.setBackgroundPaint(Color.black);plot.setDomainGridlinePaint(Color.white);plot.setRangeGridlinePaint(Color.white);plot.setAxisOffset(new RectangleInsets(4, 4, 4, 4)); //設置坐標軸與繪圖區(qū)域的距離JFreeChart chart = new JFreeChart("細胞電壓圖", //標題JFreeChart.DEFAULT_TITLE_FONT, //標題的字體,這樣就可以解決中文亂碼的問題plot,false //不在圖片底部顯示圖例);//設置X軸的顯示格式XYPlot xyplot = chart.getXYPlot(); xyplot.setForegroundAlpha(0.5f); XYItemRenderer renderer = xyplot.getRenderer(); renderer.setToolTipGenerator( new StandardXYToolTipGenerator( StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat(yyyy-MM), new DecimalFormat( "0 ") ) ); DateAxis dateAxis = new DateAxis( "時間 "); dateAxis.setDateFormatOverride(new SimpleDateFormat( "yyyy-MM ")); dateAxis.setAutoRange(true); dateAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); xyplot.setDomainAxis(dateAxis); ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 1024, 768, null);?
下面是顯示了有圖例的圖片,當點比較多時,圖例會把生成的圖片擠得非常ugly
下面是無圖例的圖片,由于圖片上只畫有一組數(shù)據(jù),因此不需要用圖例來區(qū)分不同的曲線。從圖片效果來看,還是比較pretty的
完整的程序是一個servlet,需要配置好Tomcat或其他服務器才能運行。
實際上整個過程就是生成一個png圖片,然后嵌入到網(wǎng)頁中。
目前的問題是,程序只能生成靜態(tài)的圖片,不能產(chǎn)生與用戶的交互性效果,比如鼠標移到曲線上某點,能顯示出該點的坐標,暫時沒有找到好的解決辦法。
點擊下載完整的程序和測試數(shù)據(jù)
總結
以上是生活随笔為你收集整理的使用JFreeChart在网页上绘制平滑曲线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.lang.OutOfMemor
- 下一篇: 动态页面加载进度条