下面的Demo根据jfreechart的用户开发指南以及csdn上的一片文章改编而成。
blog的的地址是: http://blog.youkuaiyun.com/simon_21/archive/2007/08/21/1752656.aspx
显示效果如下:
//
package newTechnology;
/**
*
* @author: Tonychow Create On :2007-8-26
*
*/

import
java.awt.Color;
import
java.awt.Dimension;
import
java.awt.Font;
import
java.awt.GradientPaint;
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.CategoryLabelPosition;
import
org.jfree.chart.axis.CategoryLabelPositions;
import
org.jfree.chart.axis.CategoryLabelWidthType;
import
org.jfree.chart.labels.ItemLabelAnchor;
import
org.jfree.chart.labels.ItemLabelPosition;
import
org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import
org.jfree.chart.plot.CategoryPlot;
import
org.jfree.chart.plot.PlotOrientation;
import
org.jfree.chart.renderer.category.BarRenderer;
import
org.jfree.data.category.CategoryDataset;
import
org.jfree.data.category.DefaultCategoryDataset;
import
org.jfree.text.TextBlockAnchor;
import
org.jfree.ui.ApplicationFrame;
import
org.jfree.ui.RectangleAnchor;
import
org.jfree.ui.RefineryUtilities;
import
org.jfree.ui.TextAnchor;
import
org.jfree.util.Log;
import
org.jfree.util.PrintStreamLogTarget;

//
import com.cabletech.demo.BarChart3DDemo4.CustomBarRenderer3D;
public
class
Demo
extends
ApplicationFrame
{
/**
*
*/
private static final long serialVersionUID = -7661683768592125573L;

public Demo(String string) {
super(string);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}
//生成数据集
private static CategoryDataset createDataset() {
// row keys
String series1 = "First";
String series2 = "Second";
String series3 = "Third";

// category keys
String category1 = "London";
String category2 = "New York";
String category3 = "Istanbul";
String category4 = "Cairo";

DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(23.0, series1, category1);
defaultcategorydataset.addValue(14.0, series1, category2);
defaultcategorydataset.addValue(14.0, series1, category3);
defaultcategorydataset.addValue(14.0, series1, category4);
defaultcategorydataset.addValue(13.0, series2, category1);
defaultcategorydataset.addValue(19.0, series2, category2);
defaultcategorydataset.addValue(19.0, series2, category3);
defaultcategorydataset.addValue(19.0, series2, category4);
defaultcategorydataset.addValue(7.0, series3, category1);
defaultcategorydataset.addValue(2, series3, category2);
defaultcategorydataset.addValue(9.0, series3, category3);
defaultcategorydataset.addValue(9.0, series3, category4);
return defaultcategorydataset;
}

private static JFreeChart createChart(CategoryDataset categorydataset) {
JFreeChart jfreechart = ChartFactory.createBarChart3D(
"3D Bar Chart Demo ",//标题
"Category", //横轴标签
"Value",//纵轴标签
categorydataset,//数据集
PlotOrientation.VERTICAL, //柱体方向(垂直)
true, //是否显示提示标签(tooltips)
true, //lendge?
false//是否在主题上使用超链接);
//设置 背景色
jfreechart.setBackgroundPaint(Color.cyan);
// 需要更改其它的设置要获得categoryplot...如下...
CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
categoryplot.setForegroundAlpha(1.0F);
// 显示每个柱的数值,并修改该数值的字体属性
categoryplot.getRenderer().setItemLabelGenerator(
new StandardCategoryItemLabelGenerator());
categoryplot.getRenderer().setItemLabelsVisible(true);
categoryplot.getRenderer().setPositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
TextAnchor.BOTTOM_LEFT));
// disable bar outlines...
BarRenderer renderer = (BarRenderer) categoryplot.getRenderer();
renderer.setDrawBarOutline(false);
//设置柱体标签
renderer.setItemLabelAnchorOffset(.5f);
renderer.setItemLabelFont(new Font("myfont",Font.ITALIC,10));
renderer.setItemLabelsVisible(true);
renderer.setItemMargin(.3);
// set up gradient paints for series...
//设置在每一个category中的series的颜色....第一个coloe参数是柱体要显示的颜色,
//第二个color参数是series之间间隔的颜色
GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f,
0.0f, Color.lightGray);
GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f,
0.0f, Color.lightGray);
GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,
0.0f, Color.lightGray);
renderer.setSeriesPaint(0, gp0);
renderer.setSeriesPaint(1, gp1);
renderer.setSeriesPaint(2, gp2);
// 设置坐标轴位置
// categoryplot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryMargin(0.1);
/ /设置横轴显示的样式
CategoryLabelPositions categorylabelpositions = categoryaxis
.getCategoryLabelPositions();
CategoryLabelPosition categorylabelposition = new CategoryLabelPosition(
RectangleAnchor.LEFT, TextBlockAnchor.CENTER_LEFT,
TextAnchor.CENTER_LEFT, 0.0, CategoryLabelWidthType.RANGE, 0.3F);
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions
.replaceLeftPosition(categorylabelpositions,
categorylabelposition));

return jfreechart;
}

public static JPanel createDemoPanel() {
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}

public static void main(String[] strings) {
Log.getInstance().addTarget(new PrintStreamLogTarget());
Demo barchart3ddemo2 = new Demo("3D Bar Chart Demo 2");
barchart3ddemo2.pack();
RefineryUtilities.centerFrameOnScreen(barchart3ddemo2);
barchart3ddemo2.setVisible(true);
}
}
blog的的地址是: http://blog.youkuaiyun.com/simon_21/archive/2007/08/21/1752656.aspx
显示效果如下:
























































































































































