使用JFreeChart绘制散点图
因为项目需要所以开始搞Java和JFreeChart类库…真蛋疼,看了51cto的该类库专题:http://developer.51cto.com/art/201112/309201.htm,这是最基本的,不懂JFreeChart的朋友请先移步此处。
很不错,讲得比较清楚,只是和官方发布的demo有些重合了吧,都是pieChart,敢换一个别的图吗?
下面我把画图所必须的三个模块列出来,其他的部分就不一一提供了,有需要的可以看看:
- //加载dataset,具体的业务逻辑可以不用理会
- public static XYDataset createxydataset(ArrayList<LineInfo> xydatalist, ArrayListMultimap<Integer, Integer> tabBat) {
- DefaultXYDataset dataset = new DefaultXYDataset();
- LineInfo tabTmp = xydatalist.get(0);
- int numTmp = tabTmp.getMeterNum();
- Set<Integer> allKey = tabBat.keySet();
- Iterator<Integer> it = allKey.iterator();
- int keyTmp = 0;
- while(it.hasNext())
- {
- keyTmp = it.next();
- if(tabBat.containsEntry(keyTmp, numTmp))
- break;
- }
- List<Integer> allNum = tabBat.get(keyTmp);
- int allNumSize = allNum.size();
- //data是数据的核心
- double[][] data = new double[2][allNumSize];
- it = allNum.iterator();
- Iterator<LineInfo> it2 = xydatalist.iterator();
- int tmp = 0, count = 0;
- LineInfo lineTmp = new LineInfo();
- while(it.hasNext())
- {
- tmp = it.next();
- it2 = xydatalist.iterator();
- while(it2.hasNext())
- {
- lineTmp = it2.next();
- if(tmp == lineTmp.getMeterNum())
- break;
- }
- data[0][count] = lineTmp.getIntercept();
- data[1][count] = lineTmp.getSlope();
- count++;
- }
- //addSeries里的第一个参数我还不太懂,从生成的图表看,就是图表下的说明文字而已
- dataset.addSeries("table", data);
- return dataset;
- }
- //生成图表对象
- public static JFreeChart createChart(XYDataset xydataset, String title, String xAxis, String yAxis) {
- JFreeChart scatterChart = ChartFactory.createScatterPlot(title, xAxis, yAxis, xydataset, PlotOrientation.VERTICAL, true, false, false);
- return scatterChart;
- }
- //根据图表对象,设置图像参数并画图,这里很重要,稍不注意,图里的文字就全是乱码了
- public static void drawScatterChart(JFreeChart scatterChart, String title, String noDataMsg) {
- //title, legend, plot 三个部分设置字体的方法分别如下:
- TextTitle textTitle = scatterChart.getTitle();
- textTitle.setFont(new Font("宋体", Font.BOLD, 20));
- LegendTitle legend = scatterChart.getLegend();
- if (legend != null)
- {
- legend.setItemFont(new Font("宋体", Font.BOLD, 20));
- }
- XYPlot scatterPlot = scatterChart.getXYPlot();
- scatterPlot.setNoDataMessage(noDataMsg);
- //以下三行是画图
- ChartFrame scatterFrame = new ChartFrame(title,scatterChart);
- scatterFrame.pack();
- scatterFrame.setVisible(true);
- }
总的来说,还是蛮简单的,要画其他的图去查一下API就可以了。
转载于:https://blog.51cto.com/hector/926904
使用JFreeChart绘制散点图相关推荐
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战
R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战 #仿真数据
- R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等
R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化PCA所有的主成分绘制散点图矩阵.降维后的两个(三个)核心主成分的二维.三维可视化图形.方差解释的量.载荷图等 目录
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战
R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息) ...
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战
R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(添加平滑曲线与标准差带)实战 #仿真 ...
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色、连续值程度配色)实战
R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色.连续值程度配色)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色.连续值程 ...
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状、大小)实战
R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状.大小)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置点的形状.大小)实战
- plotly基于dataframe数据绘制散点图(scatter plot)
plotly基于dataframe数据绘制散点图(scatter plot) # 读取沪深300和上证50的数据: # 绘制散点图: import plotly as py # 导入plotly库并命 ...
- R绘制散点图以及带圈定的散点图(Scatterplot With Encircling)
R绘制散点图以及带圈定的散点图(Scatterplot With Encircling) 数据分析最常用的图无疑是散点图.每当你想了解两个变量之间关系的性质时,第一选择总是散点图. 散点图(scatt ...
- Python matplotlib 绘制散点图 还不收藏起来
复习回顾 我们在往前几期中对matplotlib模块学习,对常用的反映数据变化的折线图,对比数据类型差异的柱状图和反应数据频率分布情况的直方图. 往前内容快速查看 超详细的Python matplot ...
最新文章
- ADO.NET 2.0 中的架构
- Spring Cloud【Finchley】实战-02订单微服务
- Error while adding the mapper ‘interface *****类‘ to configuration报错原因
- 从网上发现的经典js脚本
- canvas粒子动画
- 2017 Material design 第二章第六节《富有创造性的定制方案》
- Uncaught SyntaxError: Unexpected identifier异常
- [微积分] 常用定义与公式
- hashchange
- 浅谈 Attention 机制的理解
- Python数据处理Tips数据离群值的5种常用处理方法和可视化
- 如何创建一个微信公众号?
- Oracle中打印99乘法表的13种方法
- 用Python实时获取steam特惠游戏数据
- 华为harmonyos手机开发者,华为鸿蒙HarmonyOS2.0手机开发者Beta版正式发布
- F5 ELK可视化方案如何做到DNS运维更安全更高效
- 轴承故障诊断之时域指标
- EtherCAT和CANopen之间有什么关系?
- building workspace js validation
- 生成SAML所需X509证书