下面是经过我调试过的代码,只要在你的Plug-in project中新建一个ViewPart 复制粘贴即可。
package com.rcp.jfreechart.app.view;
import java.awt.Color;
import java.awt.Font;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.jfree.chart.ChartFactory;
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.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.experimental.chart.swt.ChartComposite;
public class JFreeChartView extends ViewPart {
public static final String ID = "com.rcp.jfreechart.app.view.JFreeChartView";
public JFreeChartView() {
}
public static CategoryDataset createDataset() {
// row keys...
String series1 = "Success";
String series2 = "Fail";
// column keys...
String category1 = "Category 1";
String category2 = "Category 2";
String category3 = "Category 3";
String category4 = "Category 4";
String category5 = "Category 5";
String category6 = "Category 6";
String category7 = "Category 7";
String category8 = "Category 8";
String category9 = "Category 9";
String category10 = "Category 10";
String category11 = "Category 11";
String category12 = "Category 12";
String category13 = "Category 13";
// create the dataset...
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(31.0, series1, category1);
dataset.addValue(64.0, series1, category2);
dataset.addValue(33.0, series1, category3);
dataset.addValue(75.0, series1, category4);
dataset.addValue(25.0, series1, category5);
dataset.addValue(35.0, series1, category6);
dataset.addValue(85.0, series1, category7);
dataset.addValue(35.0, series1, category8);
dataset.addValue(55.0, series1, category9);
dataset.addValue(35.0, series1, category10);
dataset.addValue(65.0, series1, category11);
dataset.addValue(45.0, series1, category12);
dataset.addValue(75.0, series1, category13);
dataset.addValue(55.0, series2, category1);
dataset.addValue(67.0, series2, category2);
dataset.addValue(86.0, series2, category3);
dataset.addValue(28.0, series2, category4);
dataset.addValue(94.0, series2, category5);
dataset.addValue(64.0, series2, category6);
dataset.addValue(74.0, series2, category7);
dataset.addValue(54.0, series2, category8);
dataset.addValue(34.0, series2, category9);
dataset.addValue(84.0, series2, category10);
dataset.addValue(94.0, series2, category11);
dataset.addValue(14.0, series2, category12);
dataset.addValue(54.0, series2, category13);
return dataset;
}
private static JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart("报表", "类别", "数值", dataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.white);
// set the range axis to display integers only...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setVisible(true);
rangeAxis.setTickLabelPaint(Color.BLACK);
plot.setRangeAxis(rangeAxis);
CategoryAxis domainAxis = plot.getDomainAxis();
plot.setDomainAxis(domainAxis);
// Lable(Math.PI/6.0)度倾斜
domainAxis.setCategoryLabelPositions(CategoryLabelPositions .createUpRotationLabelPositions(Math.PI / 6.0));
// ValueAxis rangeAxis = plot.getRangeAxis();
// //设置最高的一个 Item 与图片顶端的距离
// rangeAxis.setUpperMargin(0.15);
// //设置最低的一个 Item 与图片底端的距离
// rangeAxis.setLowerMargin(0.15);
// plot.setRangeAxis(rangeAxis); //应用我们的设置
// disable bar outlines...
BarRenderer3D renderer = new BarRenderer3D();
renderer.setSeriesPaint(0, new Color(0, 255, 0));
renderer.setSeriesPaint(1, new Color(255, 0, 0));
renderer.setSeriesPaint(2, Color.BLUE);
renderer.setItemMargin(0.1);//设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.01); //设置组内柱子之间的距离
//显示每个柱的数值,并修改该数值的字体属性
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelFont(new Font("黑体",Font.PLAIN,9));
renderer.setBaseItemLabelsVisible(true);
plot.setRenderer(renderer); //应用我们的设置
return chart;
}
@SuppressWarnings("unused")
public void createPartControl(Composite parent) {
JFreeChart chart = createChart(createDataset());
final ChartComposite frame = new ChartComposite(parent, SWT.NONE, chart, true);
}
public void setFocus() {
}
}
如果不能运行的请看另外一篇文章,也就是一些配置工作。