因为项目需要所以开始搞Java和JFreeChart类库…真蛋疼,看了51cto的该类库专题:http://developer.51cto.com/art/201112/309201.htm,这是最基本的,不懂JFreeChart的朋友请先移步此处。

很不错,讲得比较清楚,只是和官方发布的demo有些重合了吧,都是pieChart,敢换一个别的图吗?

下面我把画图所必须的三个模块列出来,其他的部分就不一一提供了,有需要的可以看看:

  1. //加载dataset,具体的业务逻辑可以不用理会
  2. public static XYDataset createxydataset(ArrayList<LineInfo> xydatalist, ArrayListMultimap<Integer, Integer> tabBat) {
  3. DefaultXYDataset  dataset = new DefaultXYDataset();
  4. LineInfo tabTmp = xydatalist.get(0);
  5. int numTmp = tabTmp.getMeterNum();
  6. Set<Integer> allKey = tabBat.keySet();
  7. Iterator<Integer> it = allKey.iterator();
  8. int keyTmp = 0;
  9. while(it.hasNext())
  10. {
  11. keyTmp = it.next();
  12. if(tabBat.containsEntry(keyTmp, numTmp))
  13. break;
  14. }
  15. List<Integer> allNum = tabBat.get(keyTmp);
  16. int allNumSize = allNum.size();
  17. //data是数据的核心
  18. double[][] data = new double[2][allNumSize];
  19. it = allNum.iterator();
  20. Iterator<LineInfo> it2 = xydatalist.iterator();
  21. int tmp = 0, count = 0;
  22. LineInfo lineTmp = new LineInfo();
  23. while(it.hasNext())
  24. {
  25. tmp = it.next();
  26. it2 = xydatalist.iterator();
  27. while(it2.hasNext())
  28. {
  29. lineTmp = it2.next();
  30. if(tmp == lineTmp.getMeterNum())
  31. break;
  32. }
  33. data[0][count] = lineTmp.getIntercept();
  34. data[1][count] = lineTmp.getSlope();
  35. count++;
  36. }
  37. //addSeries里的第一个参数我还不太懂,从生成的图表看,就是图表下的说明文字而已
  38. dataset.addSeries("table", data);
  39. return dataset;
  40. }
  41. //生成图表对象
  42. public static JFreeChart createChart(XYDataset xydataset, String title, String xAxis, String yAxis) {
  43. JFreeChart scatterChart = ChartFactory.createScatterPlot(title, xAxis, yAxis, xydataset, PlotOrientation.VERTICAL, true, false, false);
  44. return scatterChart;
  45. }
  46. //根据图表对象,设置图像参数并画图,这里很重要,稍不注意,图里的文字就全是乱码了
  47. public static void drawScatterChart(JFreeChart scatterChart, String title, String noDataMsg) {
  48. //title, legend, plot 三个部分设置字体的方法分别如下:
  49. TextTitle textTitle = scatterChart.getTitle();
  50. textTitle.setFont(new Font("宋体", Font.BOLD, 20));
  51. LegendTitle legend = scatterChart.getLegend();
  52. if (legend != null)
  53. {
  54. legend.setItemFont(new Font("宋体", Font.BOLD, 20));
  55. }
  56. XYPlot scatterPlot = scatterChart.getXYPlot();
  57. scatterPlot.setNoDataMessage(noDataMsg);
  58. //以下三行是画图
  59. ChartFrame scatterFrame = new ChartFrame(title,scatterChart);
  60. scatterFrame.pack();
  61. scatterFrame.setVisible(true);
  62. }

总的来说,还是蛮简单的,要画其他的图去查一下API就可以了。

转载于:https://blog.51cto.com/hector/926904

使用JFreeChart绘制散点图相关推荐

  1. R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战

    R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战 #仿真数据

  2. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等

    R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化PCA所有的主成分绘制散点图矩阵.降维后的两个(三个)核心主成分的二维.三维可视化图形.方差解释的量.载荷图等 目录

  3. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战

    R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息) ...

  4. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战

    R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战 #仿真 ...

  5. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色、连续值程度配色)实战

    R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色.连续值程度配色)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色.连续值程 ...

  6. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状、大小)实战

    R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状.大小)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置点的形状.大小)实战

  7. plotly基于dataframe数据绘制散点图(scatter plot)

    plotly基于dataframe数据绘制散点图(scatter plot) # 读取沪深300和上证50的数据: # 绘制散点图: import plotly as py # 导入plotly库并命 ...

  8. R绘制散点图以及带圈定的散点图(Scatterplot With Encircling)

    R绘制散点图以及带圈定的散点图(Scatterplot With Encircling) 数据分析最常用的图无疑是散点图.每当你想了解两个变量之间关系的性质时,第一选择总是散点图. 散点图(scatt ...

  9. Python matplotlib 绘制散点图 还不收藏起来

    复习回顾 我们在往前几期中对matplotlib模块学习,对常用的反映数据变化的折线图,对比数据类型差异的柱状图和反应数据频率分布情况的直方图. 往前内容快速查看 超详细的Python matplot ...

最新文章

  1. EasyBridge:一种简单的js-bridge设计方案
  2. C++ 判断两个立方体是否相等
  3. 创建ACFS集群文件系统(命令方式)
  4. LDA入门级学习笔记
  5. docker php 多端口,docker使用之php-fpm+apache多容器的xdebug和phpstorm的配置
  6. norminv函数是什么matlab,norminv函数的用法,表示的是什么意思
  7. 实现AJAX的基本步骤
  8. 对HTTP/2 支持
  9. Signals Slots(Qt5)
  10. 【C++基础学习】引起类模板被实例化情形总结
  11. Spark调优 shuffle调优
  12. Python 操作 PDF 的几种方法
  13. CDOJ 1157 数列(seq) 分块+线段树
  14. LaTex 常用的数学字体
  15. 编程求1平方+2平方+...+n平方
  16. 设置Windows静态路由表
  17. 手写汉字笔顺轨迹提取(已开源)
  18. 大数据开发课程:大数据开发培训课程
  19. Navicate无法连接,提示is not allowed to connect to this mysql server
  20. CAN通讯原理简介(一)

热门文章

  1. docker的学习总结
  2. 深度神经网络:WX+b vs XW+b
  3. PHP扩展开发-01:第一个扩展
  4. [K/3Cloud]进度条控件编程接口
  5. ASP.NET MVC 实现模式 - ModelBuilder
  6. 2012年12月工作总结
  7. UIWebView实现离线浏览
  8. 虚拟化系列-VMware vSphere 5.1 高可用性
  9. 优化 AWSTATS N种方法验证
  10. 中国人必须知道的76个常识。。。看了才发现,自己知道的实在太少了。。。学习。。。。...