jfreechart的柱状图处理

本文介绍如何使用JFreeChart库创建3D柱状图,并提供了详细的代码示例,包括设置背景色、调整坐标轴显示、自定义图例等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要针对柱状图的常见设置进行简单阐述,不涉及数据库。对应的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);  
  
    }  
  
} 

效果图如下:

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值