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

效果图:



开始时间和结束时间的间隔
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;   
 }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用JFreeChart生成柱状图,需要进行以下步骤: 1. 创建一个数据集对象,用于存储需要绘制的数据 2. 创建一个图表对象,并设置标题、x和y标签 3. 创建一个柱状图渲染器对象,设置颜色、边框等属性 4. 将数据集对象和渲染器对象关联到图表对象中 5. 将图表对象绘制到Swing组件中,如JPanel或JFrame中 下面是一个示例代码,可以生成一个简单的柱状图: ```java import java.awt.Color; import java.awt.Dimension; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.DefaultCategoryDataset; public class BarChartExample { public static void main(String[] args) { // 生成随机数据 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); Random random = new Random(); for (int i = 0; i < 5; i++) { dataset.addValue(random.nextInt(100), "Series 1", "Category " + i); } // 创建柱状图对象 JFreeChart chart = ChartFactory.createBarChart( "Bar Chart Example", // 图表标题 "Category", // x标签 "Value", // y标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向 true, // 是否显示图例 true, // 是否生成工具提示 false // 是否生成URL链接 ); // 设置柱状图渲染器 CategoryPlot plot = (CategoryPlot) chart.getPlot(); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setSeriesPaint(0, Color.BLUE); renderer.setDrawBarOutline(false); // 设置x标签位置 CategoryAxis xAxis = plot.getDomainAxis(); xAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 设置y范围 NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); yAxis.setRange(0, 100); // 将图表绘制到Swing组件中 JPanel panel = new ChartPanel(chart); panel.setPreferredSize(new Dimension(500, 300)); JFrame frame = new JFrame("Bar Chart Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(panel); frame.pack(); frame.setVisible(true); } } ``` 运行以上代码,即可看到生成柱状图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值