国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JFreeChart最佳實踐:散點圖

開發 后端
本文將介紹作者通過Java最佳圖形解決方案JFreeChart實現散點圖的詳細過程。

用JfreeChart畫散點圖,查看JfreeChart的Demo,寫的都挺復雜的,關鍵是Demo中把簡單的事情復雜化了,比如展示的例子是一個正弦曲線什么的,讓初次畫散點圖的我們摸不著頭腦。關鍵是他們得到數據集搞得太過復雜,后來想明白了,不就是二維數組嘛。想通了這一點,一切問題都解決了,不過,對于我們項目的特殊要求,并不是只畫幾個點那么簡單,還要加上區域范圍與文字說明,在查看文檔及自己摸索下,2天時間,終于搞定。下面分享一下成果,呵,還是有點成就感的。

首先,看畫圖的API,參數有:

ChartFactory.createScatterPlot(),其中,有一個xydataset,那么,我們先要知道這個xydataset是什么結構的,再看所需xydataset,散點圖,也就是單獨畫出點,也就是一個二維數據了,x ,y坐標嘛!

那么,先做好準備工作,***步,拿數據,這就不用啰嗦了,就是得到一個List也好,Set也行。

第二步,加載到數據集:

  1. /**  
  2.  *   
  3.  * @param xydatalist  
  4.  * @param bloods  
  5.  * @return  
  6.  */ 
  7.     public static XYDataset createxydataset(List<PressureBean> xydatalist,  
  8.             String bloods) {  
  9.         DefaultXYDataset xydataset = new DefaultXYDataset();  
  10.  
  11.         int size = xydatalist.size();  
  12.         double[][] datas = new double[2][size];  
  13.         for (int i = 0; i < size; i++) {  
  14.             PressureBean pres = xydatalist.get(i);  
  15.             int sys = pres.getSyspress();//收縮壓  
  16.             int dia = pres.getDiapress();//舒張壓  
  17.  
  18.             datas[0][i] = sys;  
  19.             datas[1][i] = dia;  
  20.         }  
  21.  
  22.         xydataset.addSeries(bloods, datas);  
  23.  
  24.         return xydataset;  
  25.  
  26.     } 

下一步,另外一個準備工作,畫圖方法:

  1. public static JFreeChart createChart(XYDataset xydataset,  
  2.             String bloodcattile, String shou, String shu, String nobloodData,  
  3.             String bloods, String nomal, String fore, String one, String two,  
  4.             List<PressureBean> list, Log log) {  
  5.  
  6.         // 有可能用戶在后面的版本中故意輸入不正常數值,但是為了保證圖片畫圖的完整,這里先計算  
  7.         // 用戶血壓值的***值。  
  8.         int maxpress = 160;  
  9.         int addmax = 20;  
  10.  
  11.         if (list != null && list.size() > 0) {  
  12.  
  13.             Iterator<PressureBean> it = list.iterator();  
  14.             while (it.hasNext()) {  
  15.                 PressureBean pres = it.next();  
  16.                   
  17.                 if (maxpress < pres.getDiapress()) {  
  18.                     maxpress = pres.getDiapress();  
  19.                 }  
  20.  
  21.                 if (maxpress < pres.getSyspress()) {  
  22.                     maxpress = pres.getSyspress();  
  23.                 }  
  24.             }  
  25.  
  26.             maxpress += addmax;  
  27.  
  28.  
  29.             log.info("high press value is =" + maxpress);  
  30.  
  31.         }  
  32.  
  33.         JFreeChart jfreechart = ChartFactory.createScatterPlot(bloodcattile,  
  34.                 shou, shu, xydataset, PlotOrientation.VERTICAL, truefalse,  
  35.                 false);  
  36.         jfreechart.setBackgroundPaint(Color.white);  
  37.         jfreechart.setBorderPaint(Color.GREEN);  
  38.         jfreechart.setBorderStroke(new BasicStroke(1.5f));  
  39.         XYPlot xyplot = (XYPlot) jfreechart.getPlot();  
  40.         xyplot.setNoDataMessage(nobloodData);  
  41.         xyplot.setNoDataMessageFont(new Font("", Font.BOLD, 14));  
  42.         xyplot.setNoDataMessagePaint(new Color(87149117));  
  43.  
  44.         xyplot.setBackgroundPaint(new Color(255253246));  
  45.         ValueAxis vaaxis = xyplot.getDomainAxis();  
  46.         vaaxis.setAxisLineStroke(new BasicStroke(1.5f));  
  47.  
  48.         ValueAxis va = xyplot.getDomainAxis(0);  
  49.         va.setAxisLineStroke(new BasicStroke(1.5f));  
  50.  
  51.         va.setAxisLineStroke(new BasicStroke(1.5f)); // 坐標軸粗細  
  52.         va.setAxisLinePaint(new Color(215215215)); // 坐標軸顏色  
  53.         xyplot.setOutlineStroke(new BasicStroke(1.5f)); // 邊框粗細  
  54.         va.setLabelPaint(new Color(101010)); // 坐標軸標題顏色  
  55.         va.setTickLabelPaint(new Color(102102102)); // 坐標軸標尺值顏色  
  56.         ValueAxis axis = xyplot.getRangeAxis();  
  57.         axis.setAxisLineStroke(new BasicStroke(1.5f));  
  58.  
  59.         XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot  
  60.                 .getRenderer();  
  61.         xylineandshaperenderer.setSeriesOutlinePaint(0, Color.WHITE);  
  62.         xylineandshaperenderer.setUseOutlinePaint(true);  
  63.         NumberAxis numberaxis = (NumberAxis) xyplot.getDomainAxis();  
  64.         numberaxis.setAutoRangeIncludesZero(false);  
  65.         numberaxis.setTickMarkInsideLength(2.0F);  
  66.         numberaxis.setTickMarkOutsideLength(0.0F);  
  67.         numberaxis.setAxisLineStroke(new BasicStroke(1.5f));  
  68.         numberaxis.setUpperBound(maxpress);  
  69.         numberaxis.setLowerBound(60);//最小值設置為60  
  70.         NumberAxis numberaxis1 = (NumberAxis) xyplot.getRangeAxis();  
  71.         numberaxis1.setTickMarkInsideLength(2.0F);  
  72.         numberaxis1.setTickMarkOutsideLength(0.0F);  
  73.         numberaxis1.setUpperBound(105d);  
  74.         numberaxis1.setLowerBound(35);  
  75.         numberaxis1.setAxisLineStroke(new BasicStroke(1.5f));  
  76.  
  77.         // if (xydataset != null) {  
  78.         XYBoxAnnotation box = new XYBoxAnnotation(008959); //正常血壓所在區域內邊界  
  79.         XYBoxAnnotation box1 = new XYBoxAnnotation(0011979);//高血壓前期所在區域內邊界  
  80.         XYBoxAnnotation box2 = new XYBoxAnnotation(0013989);//高血壓一期所在區域內邊界  
  81.         XYBoxAnnotation box3 = new XYBoxAnnotation(0015999);//高血壓二期所在區域內邊界  
  82.         XYTextAnnotation text1 = new XYTextAnnotation(nomal, 7062.5);//標識“正常”  
  83.         XYTextAnnotation text = new XYTextAnnotation(fore, 7082.5);//“高血壓前期”  
  84.         XYTextAnnotation text2 = new XYTextAnnotation(one, 7091.5);//“高血壓一期”  
  85.         XYTextAnnotation text3 = new XYTextAnnotation(two, 70101.5);//“高血壓二期”  
  86.  
  87.           
  88.         //將上面的邊界線條,說明文字加入到xyplot中。  
  89.         xyplot.addAnnotation(box);  
  90.         xyplot.addAnnotation(box1);  
  91.         xyplot.addAnnotation(box2);  
  92.         xyplot.addAnnotation(box3);  
  93.  
  94.         xyplot.addAnnotation(text);  
  95.         xyplot.addAnnotation(text1);  
  96.         xyplot.addAnnotation(text2);  
  97.         xyplot.addAnnotation(text3);  
  98.         // }  
  99.         return jfreechart;  
  100.     } 

***一步,返回圖片URL

  1. public static void drawScatterChart(IrisIoInterface io, Log log,  
  2.             XYDataset xydataSet, String title, String shou, String shu,  
  3.             String nodata, String boolds, String nomal, String fore,  
  4.             String one, String two, List<PressureBean> list) {  
  5.  
  6.         JFreeChart chart = createChart(xydataSet, title, shou, shu, nodata,  
  7.                 boolds, nomal, fore, one, two, list, log);  
  8.  
  9.         HttpServletRequest request = io.getRequest();  
  10.         String filename = "";  
  11.         String graphURL = "";  
  12.         try {  
  13.             filename = ServletUtilities.saveChartAsPNG(chart, 400300null,  
  14.                     io.getSession());  
  15.             graphURL = request.getContextPath() + "/displayChart?filename=" 
  16.                     + filename;  
  17.         } catch (IOException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.             log.error(e);  
  21.         }  
  22.  
  23.         io.setData("filename", filename, BeanShare.BEAN_SHARE_REQUEST);  
  24.         io.setData("scatterurl", graphURL, BeanShare.BEAN_SHARE_REQUEST);  
  25.  
  26.     } 

效果圖:

原文鏈接:http://juliana-only.iteye.com/blog/544104

【編輯推薦】

  1. JFreeChart***實踐:折線圖
  2. JFreeChart***實踐:柱狀圖
  3. JFreeChart***實踐:3D餅圖
  4. JFreeChart***實踐:時序圖
  5. JFreeChart***實踐:甘特圖
責任編輯:林師授 來源: 遠去的渡口博客
相關推薦

2011-12-21 13:52:27

JavaJFreeChart

2011-12-21 13:44:33

JavaJFreeChart

2011-12-21 14:15:08

JavaJFreeChart

2011-12-21 13:25:33

JavaJFreeChart

2011-12-21 12:58:41

JavaJFreeChart

2011-12-21 14:34:33

JavaJFreeChart

2011-12-21 12:46:43

2011-12-20 12:53:43

JavaJFreeChart

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse?變量

2012-08-09 09:10:56

代碼審查代碼

2024-08-21 08:02:47

2014-08-19 10:06:53

IAP

2014-06-09 15:50:08

2015-09-23 09:08:38

java反射

2023-09-11 08:50:03

Maven工具關系管理

2023-09-13 08:00:00

JavaScript循環語句

2010-02-04 11:55:27

ibmdwDB2

2010-07-06 09:07:09

2009-12-31 10:16:49

點贊
收藏

51CTO技術棧公眾號

国产在线观看精品| 黄动漫在线免费观看| 一区二区美女| 亚洲欧洲国产伦综合| 麻豆传媒视频在线观看| 一区二区久久久久| 999精彩视频| 久久精品一区二区| 鲁一鲁一鲁一鲁一色| 精品在线亚洲视频| 亚洲一区三区| 精品一区二区三区久久| 一本色道婷婷久久欧美| 美日韩一区二区| 午夜精品亚洲一区二区三区嫩草 | 国产极品粉嫩福利姬萌白酱| 首页综合国产亚洲丝袜| 精品无码久久久久国产| 亚洲欧美一级二级三级| 亚洲综合在线做性| 欧美精品一区二区三区久久久竹菊| 国产精品网址在线| 91久久夜色精品国产按摩| 国产精品网址在线| 欧美在线高清| 精品视频一区二区三区四区| 日韩国产欧美一区二区三区| 色中文字幕在线观看| 成人精品电影在线观看| 日本免费成人网| 本田岬高潮一区二区三区| 无码aⅴ精品一区二区三区浪潮 | 日韩欧美一区电影| 91成人免费视频| 久久成人精品一区二区三区| 青青青免费在线视频| 日韩成人在线观看| 日本在线视频一区二区| 亚洲三级av在线| 欧美经典影片视频网站| 孩xxxx性bbbb欧美| 99久久婷婷这里只有精品 | 黄色在线免费网站| 亚洲裸体xxxx| 97久久综合区小说区图片区| 日本视频久久久| 亚洲黄色av| 久久这里只有精品18| 国产精品免费观看视频| 欧美91在线|欧美| 久久久www成人免费毛片麻豆| 97人人做人人爱| 亚洲影院在线看| 国产美女一区| www.激情网| 亚洲欧美精品午睡沙发| 黄色片在线免费看| 日韩精品高清视频| 999久久精品| 国产精成人品localhost| 国产在线精品免费| av高清资源| 日韩一级高清毛片| 日本一区二区三区视频在线看 | 欧美女同一区| 国内精品一区二区三区| 亚洲高清资源在线观看| 永久域名在线精品| 亚洲视频图片小说| 青青青草视频在线| 91精品国产一区| 日韩国产精品久久久| 国产熟人av一二三区| 欧美日韩在线视频观看| 美女一区网站| 91在线|亚洲| 成人黄色在线视频| 3d成人动漫在线| 欧美大片在线看| 99re国产精品| 激情综合网五月激情 | 亚洲激情成人在线| 免费h在线看| 国产精品一区二区性色av| 久88久久88久久久| 三级理论午夜在线观看| 精品国产一区二区三区四区在线观看| 欧美极品一区二区三区| 爆乳熟妇一区二区三区霸乳| 日韩欧美综合一区| 奇米影视亚洲| 欧美 日韩精品| 亚洲第一黄色网| 天天做天天爱天天综合网2021| 免费毛片网站在线观看| 欧美日韩大陆在线| 欧美猛男男男激情videos| 国产精品videossex国产高清| 精品视频在线看| 禁果av一区二区三区| 国产男女在线观看| 精品成人一区二区| 在线精品福利| 一级毛片在线看| 91高清在线免费观看| eeuss鲁片一区二区三区在线观看| 动漫一区在线| av成人综合网| 亚洲一区二区精品视频| 深夜福利一区二区三区| 亚洲欧美一区二区原创| 偷拍亚洲欧洲综合| 欧美日韩一本| www插插插无码视频网站| 欧美大黄免费观看| 国户精品久久久久久久久久久不卡| av在线天天| 97视频在线观看免费高清完整版在线观看 | 黄色精品在线看| 青青视频一区二区| 欧美三级理论片| 久久久精品免费视频| 国产一区二区三区高清播放| 成人免费观看视频大全| 成人久久18免费网站漫画| 亚洲乱码国产乱码精品精98午夜 | 亚洲黄色av女优在线观看 | 91网页版在线| 精品美女一区| 无码人妻精品一区二区三区在线| 亚洲奶大毛多的老太婆| 国产真实精品久久二三区| av电影在线免费| 亚洲伊人婷婷| 亚洲欧美国产精品专区久久 | 亚洲电影一区二区三区| 久久影视一区| 精品99又大又爽又硬少妇毛片| 成人欧美一区二区三区在线| 精品日韩视频在线观看| 欧美高清一区| 黄色免费在线看| 一本久道久久综合| 亚洲最新av网址| 国产亚洲一区字幕| 琪琪久久久久日韩精品| 美女一级全黄| 成人免费视频97| 色诱亚洲精品久久久久久| 欧美精品不卡| 人妖欧美1区| 久久久久久久久久久99| 欧美激情日韩图片| 亚洲最大成人综合| 综合久久综合| 成人免费网址| 日本久久高清视频| 久久久成人精品视频| 国产精品进线69影院| 99精品视频在线观看免费播放| 天堂аⅴ在线地址8| 亚洲精品一区二| 欧美成人在线免费| 欧美日韩视频免费播放| 奇米888四色在线精品| 国产精品成人3p一区二区三区| 九九视频精品在线观看| 国产日本欧美一区| 日韩免费观看高清完整版| av资源站一区| 日韩中字在线| 超黄网站在线观看| 久久撸在线视频| 成人综合电影| 色婷婷综合成人av| 亚洲国产成人av| 久久精品久久精品| 天美av一区二区三区久久| 日本福利专区在线观看| 欧美中日韩在线| 国产一区深夜福利| 亚洲成人网av| 中文字幕不卡的av| 最新成人av网站| 婷婷激情成人| 1024视频在线| 亚洲77777| 亚洲精品成人自拍| 国产99视频在线观看| 欧美精品一区二区在线观看| 中文在线资源观看网站视频免费不卡| 激情视频一区| xvideos.蜜桃一区二区| 嫩草在线视频| 久久久精品麻豆| 欧美成人蜜桃| 国产99久久久欧美黑人 | 在线观看免费黄色| 日韩中文字幕二区| 欧美亚洲另类久久综合|