jfreechart的柱状图处理

这里主要针对柱状图的常见设置进行简单阐述,不涉及数据库。对应的dataset模块,可以替换成查询数据库的数据处理

jfreechart已经升级到1.0.13版本了,效果也是比较精美了。不说了,上代码

import java.awt.Color;  
import java.awt.Font;  
import org.jfree.chart.ChartFactory;  
import org.jfree.chart.ChartFrame;  
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.axis.NumberTickUnit;  
import org.jfree.chart.plot.CategoryPlot;  
import org.jfree.chart.plot.PlotOrientation;  
import org.jfree.chart.title.TextTitle;  
import org.jfree.data.category.CategoryDataset;  
import org.jfree.data.category.DefaultCategoryDataset;  
 /** 
 *jfreechart柱状图
 */  
public class createBarChart3DTest {  
    private static CategoryDataset getDataSet() {  
  
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  
        dataset.addValue(200, "计划", "清华大学");  
        dataset.addValue(400, "实报", "清华大学");  
  
        dataset.addValue(360, "计划", "天津大学");  
        dataset.addValue(520, "实报", "天津大学");  
  
        dataset.addValue(100, "计划", "北京大学");  
        dataset.addValue(150, "实报", "北京大学");  
  
        dataset.addValue(280, "计划", "复旦大学");  
        dataset.addValue(300, "实报", "复旦大学");  
        return dataset;  
    }  
    public static void main(String[] args) {  
        CategoryDataset dataset = getDataSet();  
        JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", "水果产品","销售数量", dataset, PlotOrientation.VERTICAL, true, true, true);  
        ChartFrame frame = new ChartFrame("水果产量图 ", chart, true);  
        // 自定义设定背景色  
        // chart.setBackgroundPaint(Color.getHSBColor(23,192,223));  
        chart.setBackgroundPaint(Color.WHITE);  
        // 获得 plot:3dBar为CategoryPlot  
        CategoryPlot categoryPlot = chart.getCategoryPlot();  
        // 设定图表数据显示部分背景色  
        categoryPlot.setBackgroundPaint(Color.BLACK);  
        // 横坐标网格线  
        categoryPlot.setDomainGridlinePaint(Color.RED);  
        // 设置网格线可见  
        categoryPlot.setDomainGridlinesVisible(true);  
        // 纵坐标网格线  
        categoryPlot.setRangeGridlinePaint(Color.RED);  
        // 重要的类,负责生成各种效果  
        // BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();  
        // 获取纵坐标  
        NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis();  
        // 设置纵坐标的标题字体和大小  
        numberaxis.setLabelFont(new Font("黑体", Font.CENTER_BASELINE, 24));  
        // 设置纵坐标的坐标值的字体颜色  
        numberaxis.setLabelPaint(Color.BLACK);  
        // 设置纵坐标的坐标轴标尺颜色  
        numberaxis.setTickLabelPaint(Color.RED);  
        // 坐标轴标尺颜色  
        numberaxis.setTickMarkPaint(Color.BLUE);  
        // 纵坐标的默认间距值,这个以及间距值设置容易将纵坐标的数值显示给隐藏掉了 
        // numberaxis.setAutoTickUnitSelection(true);  
        // 设置纵坐标间距值  
        numberaxis.setAutoTickUnitSelection(false);  
        numberaxis.setTickUnit(new NumberTickUnit(150));  
        // 获取横坐标  
        CategoryAxis domainAxis = categoryPlot.getDomainAxis();  
        // 设置横坐标的标题字体和大小  
        domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 13));  
        // 设置横坐标的坐标值的字体颜色  
        domainAxis.setTickLabelPaint(Color.RED);  
        // 设置横坐标的坐标值的字体  
        domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 30));  
        // 设置横坐标的显示  
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));  
        // 这句代码解决了底部汉字乱码的问题  
        chart.getLegend().setItemFont(new Font("黑体", 0, 16));  
        // 设置图例标题  
        Font font = new java.awt.Font("黑体", java.awt.Font.CENTER_BASELINE, 50);  
        TextTitle title = new TextTitle("项目状态分布");  
        title.getBackgroundPaint();  
        title.setFont(font);  
        // 设置标题的字体颜色  
        title.setPaint(Color.RED);  
        chart.setTitle(title);  
        frame.pack();  
        frame.setVisible(true);  
  
    }  
  
} 

效果图如下:

jfreechart的柱状图处理_第1张图片

转自:http://hefeng1987-net-163-com.iteye.com/blog/846041

已经经过我亲手验证过,效果属实



你可能感兴趣的:(数据库,jfreechart,import,dataset,网格,plot)