您的位置:首页 > 其它

jfreechart生成柱状图,x轴间隔显示

2017-06-07 18:22 375 查看
效果图:

开始时间和结束时间的间隔
Long timeLength = (simpleDateFormat.parse(endtime).getTime() - simpleDateFormat.parse(starttime).getTime())/(60*60*1000);
//为生成柱状图添加数据

TimeTableXYDataset localTimeTableXYDataset = new TimeTableXYDataset();
localTimeTableXYDataset.add((new Hour(小时,日,月,年), 参数值, 标题名称);//根据自己需要的格式添加


/** * 柱状图 间隔显示 * * @param path 保存路径* @param titleName 标题名称* @param paramTableXYDataset 参数* @param width* @param height* @param title* @param imageHeight* @throws IOException */ public static Jfreechart createChart(String titleName, TableXYDataset paramTableXYDataset, int width, int height, Long timeLength) throws IOException { //x轴标题 DateAxis localDateAxis = new DateAxis(null); SimpleDateFormat sdf = new SimpleDateFormat("d日H时", Locale.CHINESE); //格式化时间轴显示 //隔多少单位显示 localDateAxis.setTickUnit(new DateTickUnit(DateTickUnit.HOUR, (int) (timeLength / 6.0), sdf));//6.0可变参数 根据大小调整//y轴标题 NumberAxis localNumberAxis = new NumberAxis(null); localNumberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// localNumberAxis.setUpperMargin(0.1D); localNumberAxis.setTickUnit(new NumberTickUnit(8));// localNumberAxis.setLowerBound(0.0); StackedXYBarRenderer localStackedXYBarRenderer = new StackedXYBarRenderer(0.1D); //阴影 localStackedXYBarRenderer.setShadowVisible(false); localStackedXYBarRenderer.setBaseItemLabelsVisible(true); localStackedXYBarRenderer.setItemLabelAnchorOffset(0); // 设置柱状图的顶端显示数字 //柱状上不显示数据 localStackedXYBarRenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());// localStackedXYBarRenderer.setBasePositiveItemLabelPosition((new ItemLabelPosition(ItemLabelAnchor.INSIDE8, TextAnchor.BOTTOM_CENTER))); localStackedXYBarRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER)); //设置每个平行柱的之间距离 localStackedXYBarRenderer.setMargin(0.5D); XYPlot localXYPlot = new XYPlot(paramTableXYDataset, localDateAxis, localNumberAxis, localStackedXYBarRenderer); JFreeChart localJFreeChart = new JFreeChart(titleName, localXYPlot); TextTitle textTitle = localJFreeChart.getTitle(); textTitle.setFont(new Font("微软雅黑", Font.PLAIN, 12)); localJFreeChart.setTitle(textTitle); // 设置总的背景颜色 localJFreeChart.setBackgroundPaint(ChartColor.white); // 获得图表对象 XYPlot p = localJFreeChart.getXYPlot(); // 设置图的背景颜色 p.setBackgroundPaint(ChartColor.white); //设置图的边框 p.setOutlinePaint(ChartColor.white); //设置x轴网格线 p.setDomainGridlinePaint(ChartColor.white); //设置y轴网格线 p.setRangeGridlinePaint(ChartColor.white); NumberAxis numberaxis = (NumberAxis) p.getRangeAxis(); numberaxis.setUpperMargin(0.14999999999999999D); numberaxis.setLowerBound(0.0);// numberaxis.setTickUnit(new NumberTickUnit(0.5));//设置Y轴间隔 numberaxis.setAutoTickUnitSelection(true);//取消柱子上的渐变色 XYBarRenderer customBarRenderer = (XYBarRenderer) p.getRenderer(); customBarRenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); customBarRenderer.setSeriesItemLabelsVisible(0, true); customBarRenderer.setBarPainter(new StandardXYBarPainter());//设置柱子颜色 customBarRenderer.setSeriesPaint(0, new Color(0, 97, 183)); localJFreeChart.getLegend().setVisible(false); // saveIoImage(path, width, height, cellsValue, title, imageHeight, localJFreeChart); return localJFreeChart; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: