/**
* ChartToImage.java
*
* Copyright 2008 NIEC. All rights reserved.
* Use is subject to license terms.
*
* AUTHOR: WangMin
* SINCE: JDK 1.5 OR JDK 1.6
* VERSION: V2.0
* DATE: 2008-8-22
*
* LAST MODIFY:
* USER:
* REMARK:
*
* MODIFY:
* USER:
* REMARK:
*
*/
package org.niec.chartservice.test;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.filechooser.FileFilter;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PolarPlot;
import org.jfree.chart.renderer.PolarItemRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.xy.DefaultXYItemRenderer;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.TextAnchor;
import org.niec.chartservice.chart.ChartCreater;
import org.niec.chartservice.chart.WMRadarPlotCreater;
import org.niec.chartservice.dataset.ChartDataSet;
import org.niec.chartservice.dataset.model.CategoryDatasetModel;
import org.niec.chartservice.dataset.model.XYSeriesCollectionModel;
import org.niec.chartservice.label.CreateCategoryItemLabel;
/**
* @author WangMin
*
*/
public class ChartToImage {
public void outputPNG(JFreeChart chart,File file)
{
try {
ChartUtilities.saveChartAsPNG(file,chart,640,480);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String []args)
{
ChartDataSet chartdataset = new ChartDataSet();
//柱形图,条形图,折线图Dataset
DefaultCategoryDataset categorydataset = new DefaultCategoryDataset();
for(int p=1;p<=3;p++)
for(int index=1;index<=8;index++)
{
CategoryDatasetModel cdm = new CategoryDatasetModel(index*p,"对象"+p,"属性"+index);
categorydataset.addValue(cdm.getValue(),cdm.getSeries(),cdm.getCategory());
}
chartdataset.setCategoryDataset(categorydataset);
new ChartToImage().outputPNG(new ChartCreater().createCategoryChart("2D柱图", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\2D柱图.png"));
JFreeChart zhu3D = new ChartCreater().createCategoryChart3D("3D柱图", "category", "value", chartdataset.getCategoryDataset(),PlotOrientation.VERTICAL, true, true, false);
CategoryItemRenderer z3d_ren = zhu3D.getCategoryPlot().getRenderer();
CreateCategoryItemLabel z3d_lab = new CreateCategoryItemLabel();
ItemLabelPosition z3d_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER);
z3d_ren.setPositiveItemLabelPosition(z3d_ilp);
z3d_ren.setItemLabelGenerator(z3d_lab);
z3d_ren.setItemLabelsVisible(true);
new ChartToImage().outputPNG(zhu3D, new File(System.getProperty("user.dir")+"\\3D柱图.png"));
new ChartToImage().outputPNG(new ChartCreater().createLineChart3D("3D折线", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\3D折线.png"));
JFreeChart line2D = new ChartCreater().createLineChart("2D折线", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false);
CategoryItemRenderer line2D_ren = line2D.getCategoryPlot().getRenderer();
CreateCategoryItemLabel line2D_lab = new CreateCategoryItemLabel();
ItemLabelPosition line2D_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER);
line2D_ren.setPositiveItemLabelPosition(line2D_ilp);
line2D_ren.setItemLabelGenerator(line2D_lab);
line2D_ren.setItemLabelsVisible(true);
new ChartToImage().outputPNG(line2D, new File(System.getProperty("user.dir")+"\\2D折线.png"));
new ChartToImage().outputPNG(new ChartCreater().createBarChart("2D条图", "category", "value", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false), new File(System.getProperty("user.dir")+"\\2D条图.png"));
JFreeChart bar3D = new ChartCreater().createBarChart3D("3D条图", "指标项", "得分", chartdataset.getCategoryDataset(), PlotOrientation.VERTICAL, true, true, false);
CategoryItemRenderer bar3D_ren = bar3D.getCategoryPlot().getRenderer();
CreateCategoryItemLabel bar3D_lab = new CreateCategoryItemLabel();
ItemLabelPosition bar3D_ilp = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_RIGHT);
bar3D_ren.setPositiveItemLabelPosition(bar3D_ilp);
bar3D_ren.setItemLabelGenerator(bar3D_lab);
bar3D_ren.setItemLabelsVisible(true);
new ChartToImage().outputPNG(bar3D, new File(System.getProperty("user.dir")+"\\3D条图.png"));
//雷达图数据集
XYSeriesCollection seriesCollection = new XYSeriesCollection();
for(int q=1;q<=5;q++)
{
XYSeriesCollectionModel xyscm = new XYSeriesCollectionModel("对象"+q,true);
for(int index=10;index<=200;index+=10)
{
xyscm.add(index*360/200,index+q);
}
seriesCollection.addSeries(xyscm);
}
chartdataset.setXYSeriesCollection(seriesCollection);
WMRadarPlotCreater wmrpc = new WMRadarPlotCreater();
JFreeChart radarplot = wmrpc.createWMPolarChart("雷达图", chartdataset.getXYSeriesCollection(), true, true, false,
new String[]{"信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源","信息化领导力","信息化基础建设","信息化应用与效果","服务管理与治理","信息化人力资源"});
new ChartToImage().outputPNG(radarplot, new File(System.getProperty("user.dir")+"\\雷达图.png"));
JFrame f = new JFrame("Enhanced File Example");
JPanel j = new FileChooserDemo();
f.getContentPane().add(j, BorderLayout.CENTER);
f.setSize(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class FileChooserDemo extends JPanel
{
class ExtensionFilter extends FileFilter
{
private String extensions[];
private String description;
public ExtensionFilter(String description, String extension) {
this(description, new String[] { extension });
}
public ExtensionFilter(String description, String extensions[]) {
this.description = description;
this.extensions = (String[]) extensions.clone();
}
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
int count = extensions.length;
String path = file.getAbsolutePath();
for (int i = 0; i< count; i++) {
String ext = extensions[i];
/* if (path.endsWith(ext)&&(path.charAt(path.length() - ext.length()) == &apos.&apos)) {
return true;
}*/
}
return false;
}
public String getDescription() {
return (description == null ? extensions[0] : description);
}
}
public FileChooserDemo() {
JButton jb = new JButton("Open File Viewer");
add(jb);
ActionListener listener = new ActionListener()
{
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
/*FileFilter type1 = new ExtensionFilter("Java source", ".java");
FileFilter type2 = new ExtensionFilter("Image files",
new String[] { ".jpg", ".gif", "jpeg", "xbm" });
FileFilter type3 = new ExtensionFilter("HTML files",
new String[] { ".htm", ".html" });
chooser.addChoosableFileFilter(type1);
chooser.addChoosableFileFilter(type2);
chooser.addChoosableFileFilter(type3);
chooser.setAcceptAllFileFilterUsed(false);
chooser.setFileFilter(type2);*/ // Initial filter setting
int status = chooser.showOpenDialog(FileChooserDemo.this);
if (status == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
System.out.println(f);
}
}
};
jb.addActionListener(listener);
}
}