圆形柱状图,直接看代码(有详细注释)
BarChart3DCase.java
package com.graph.myself;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.text.DecimalFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.GradientPaintTransformType;
import org.jfree.ui.StandardGradientPaintTransformer;
import org.jfree.ui.TextAnchor;
import com.graph.myself.CylinderRenderer;
/**
* 3D直方图例子
* @author zengfantian
*
*/
public class BarChart3DCase {
/**
* 获取数据集
*
* @return CategoryDataset
*/
private CategoryDataset getDataSet() {
CategoryDataset dataset = new DefaultCategoryDataset();
// 同一种类型的数据放在一个数组元素中
final double[][] data = new double[][] {
{ 967, 1164, 1463, 1793, 1933 },
{ 2164, 3063, 3955, 4031, 6749 },
{ 1028, 1357, 1203, 1392, 2316 } };
// 横向说明
final String[] rowKeys = { "发明", "实用新型", "外观设计" };
// 横向坐标值
final String[] columnKeys = { "2006年", "2007年", "2008年", "2009年", "2010年" };
//用DatasetUtilities来构建所需要的数据对象
dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,data);
return dataset;
}
/**
* 创建图表JfreeChart对象
* @param dataset 数据集
* @param title 图表标题
* @return 图表JFreeChart
*/
private JFreeChart createChart(CategoryDataset dataset,String title) {
//用ChartFactory来构建所需的Chart对象
JFreeChart chart = ChartFactory.createStackedBarChart3D(
title, //图表标题
"",//横向标签
"",//纵向标签
dataset, //数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直,
true,//是否显示图例(对于简单的柱状图必须是false)
true, //
false //是否生成URL链接
);
chart = this.setChart(chart);
return chart;
}
/**
* 对X轴的设置
*
* @param domainAxis
*/
private void setXDomainAxis(CategoryAxis domainAxis) {
Font labelFont = new Font("宋体", Font.CENTER_BASELINE, 12);
domainAxis.setLowerMargin(0.1);// 设置距离图片左端距离此时为10%
domainAxis.setUpperMargin(0.1);// 设置距离图片右端距离此时为百分之10
domainAxis.setLabelFont(labelFont);// X轴标题
domainAxis.setTickLabelFont(labelFont);// X轴数值
domainAxis.setCategoryLabelPositionOffset(10);// 图表横轴与标签的距离(10像素)
domainAxis.setCategoryMargin(0.2);// 横轴标签之间的距离20%
// domainAxis.setMaximumCategoryLabelLines(1);
// domainAxis.setMaximumCategoryLabelWidthRatio(0);
dom