因为项目需要所以开始搞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. ADO.NET 2.0 中的架构
  2. Spring Cloud【Finchley】实战-02订单微服务
  3. Error while adding the mapper ‘interface *****类‘ to configuration报错原因
  4. 从网上发现的经典js脚本
  5. canvas粒子动画
  6. 2017 Material design 第二章第六节《富有创造性的定制方案》
  7. Uncaught SyntaxError: Unexpected identifier异常
  8. [微积分] 常用定义与公式
  9. hashchange
  10. 浅谈 Attention 机制的理解
  11. Python数据处理Tips数据离群值的5种常用处理方法和可视化
  12. 如何创建一个微信公众号?
  13. Oracle中打印99乘法表的13种方法
  14. 用Python实时获取steam特惠游戏数据
  15. 华为harmonyos手机开发者,华为鸿蒙HarmonyOS2.0手机开发者Beta版正式发布
  16. F5 ELK可视化方案如何做到DNS运维更安全更高效
  17. 轴承故障诊断之时域指标
  18. EtherCAT和CANopen之间有什么关系?
  19. building workspace js validation
  20. 生成SAML所需X509证书

热门文章

  1. oracle新建用户和授权及其删除
  2. java json转map
  3. Unable to open file dclusr60.lib解决方法
  4. 【无私分享:ASP.NET CORE 项目实战】目录索引
  5. 软件开发心得点滴记录
  6. 记一次小的51CTO聚会
  7. MS CRM2011实体介绍(四)——目标管理方面的实体
  8. Struts2 Hibernate Spring 整合的基本流程和步骤及其相关配置细节
  9. 后端开发工程师的DIV+CSS两栏布局入门
  10. eLua学习第一课:和Lua的第一次亲密接触