jfreechart - (3)BarChart柱状图

平面柱状图

       生成柱状图操作:

       JFreeChart chart = ChartFactory.createBarChart( 
                String title,                 // 图标题 
                String categoryAxisLabel,     //x 轴标题 
                String valueAxisLabel,       //y 轴标题 
                CategoryDataset dataset,      // 数据源 
                PlotOrientation orientation,    // 显示方向 
                boolean legend,             // 是否显示图例 
                boolean tooltips,            // 是否显示 tooltip 
                boolean urls) ;              // 是否指定 url 

 

平面柱状图的 Plot 对象是 CategoryPlot 类型。 CategoryPlot 对象的 x 轴是 CategoryAxis 对象, y 轴是 NumberAxis 对象,绘制单元是 BarRenderer 对象,数据源是 CategoryDataset 对象。

 

//获取 CategoryPlot 对象操作为: 
CategoryPlot plot = ( CategoryPlot ) chart.getPlot(); 或者 
CategoryPlot plot = chart.getCategoryPlot(); 
//获取绘制单元操作: 
BarRenderer renderer = (BarRenderer) plot.getRenderer(); 
//获取 x 轴的操作: 
CategoryAxis xAxis = ( CategoryAxis ) plot.getDomainAxis(); 
//获取 y 轴操作: 
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); 
//获取数据源: 
CategoryDataset dataset=plot.getDataset(); 

 

 
柱状图可以接受一切 CategoryDataset 类型的数据源,下面讲解一下常用的 CategoryDataset 类型 DefaultCategoryDataset 的使用方式

//实例化: 
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
增加数据 
dataset .addValue(double value, Comparable rowKey, Comparable columnKey) ; 
//删除数据: 对行同样有上述两种删除方式
dataset .removeValue(Comparable rowKey, Comparable columnKey); 
dataset. removeColumn(int columnIndex); 
dataset. removeColumn(Comparable columnKey); 
//修改数据: 
dataset. setValue(double value, Comparable rowKey, Comparable columnKey); 
//查询数据 : 
dataset. setValue(double value, Comparable rowKey, Comparable columnKey); 


对 plot 对象、绘制单元、 x 轴、 y 轴的显示特性修改不再一一介绍。

3D 柱状图

       对应的工厂方法为 createBarChart3D ,该方法的参数与平面柱状图相同。 3D 柱状图的 Plot 对象是 CategoryPlot 类型。 CategoryPlot 对象的 x 轴是 CategoryAxis3D 对象, y 轴是 NumberAxis3D 对象,绘制单元是 BarRenderer3D 对象,数据源是 CategoryDataset 对象。

       具体使用以及操作与平面柱状图雷同,不在详述。

 

 

demo

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class TestBarChart {

	public static DefaultCategoryDataset createDataset() {
		DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
		String rowKey1 = "最高收视率";
		String rowKey2 = "最低收视率";
		String columnKey1 = "篮球火";
		String columnKey2 = "无敌珊宝妹";
		String columnKey3 = "不良笑花";
		categoryDataset.setValue(2.80, rowKey1, columnKey1);
		categoryDataset.setValue(1.72, rowKey2, columnKey1);
		categoryDataset.setValue(3.63, rowKey1, columnKey2);
		categoryDataset.setValue(2.37, rowKey2, columnKey2);
		categoryDataset.setValue(2.84, rowKey1, columnKey3);
		categoryDataset.setValue(1.46, rowKey2, columnKey3);
		return categoryDataset;
	}

	public static void createBarChart() {
		JFreeChart barChart = ChartFactory.createBarChart("台湾偶像剧收视率2008/09/21", "",
				"收视率百分点", createDataset(), PlotOrientation.VERTICAL,
				true, true, false);
		
		ChartFrame frame=new ChartFrame("Test Bar Chart",barChart);
		frame.pack();
		frame.setVisible(true);
	}
	
	public static void main(String[] args) {
		createBarChart();
	}

}

 

 效果图

package com.px1987.jfreechart;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYBarDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class TestXYBarChart {

	public static IntervalXYDataset createDataset() {
		XYSeriesCollection seriesCollection = new XYSeriesCollection();
		XYSeries series1 = new XYSeries("平均收视率");
		series1.add(1, 7.25);
		series1.add(2, 4.81);
		series1.add(3, 3.69);
		series1.add(4, 3.53);
		series1.add(5, 2.95);
		series1.add(6, 3.96);
		seriesCollection.addSeries(series1);
		return new XYBarDataset(seriesCollection, 0.9);
	}

	public static void createXYBarChart() {
		JFreeChart chart = ChartFactory.createXYBarChart("无敌珊宝妹平均收视率",
				"集数", false, "收视率百分比", createDataset(), PlotOrientation.VERTICAL,
				true, false, false);

		ChartFrame frame = new ChartFrame("Test XY Bar Chart", chart);
		frame.pack();
		frame.setVisible(true);
	}
	
	public static void main(String[] args) {
		createXYBarChart();
	}
}

 

你可能感兴趣的:(jfreechart)