package org.greenstone.gsdl3_extension.mat; import java.awt.Dimension; import java.util.HashMap; import java.util.Iterator; import java.util.Set; 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.CategoryLabelPositions; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class DrawXYChart extends ApplicationFrame { private static String Item = null; private static HashMap map = new HashMap(); public DrawXYChart(String str1, String str2, HashMap hp, int operation) { super("Frequency V.S "+str2); Item = str2; map = hp; JPanel jpanel = createDemoPanel(operation); jpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(jpanel); pack(); RefineryUtilities.centerFrameOnScreen(this); setVisible(true); } private static CategoryDataset createDataset() { DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); Set s = map.keySet(); Iterator i = s.iterator(); while(i.hasNext()){ String metaName = (String)i.next(); Integer in = (Integer)map.get(metaName); int number = in.intValue(); defaultcategorydataset.addValue(number,metaName,metaName); } return defaultcategorydataset; } private static CategoryDataset createDataset2() { DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); Set s = map.keySet(); Iterator i = s.iterator(); int counter = 0; while(i.hasNext()){ String metaName = (String)i.next(); Integer in = (Integer)map.get(metaName); int number = in.intValue(); defaultcategorydataset.addValue(number , metaName, counter+""); counter++; } return defaultcategorydataset; } private static JFreeChart createChart(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createBarChart3D("",Item,"Frequency", categorydataset,PlotOrientation.VERTICAL, false,true, false); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); CategoryAxis categoryaxis = categoryplot.getDomainAxis(); categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.39269908169872414)); CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer(); categoryitemrenderer.setBaseItemLabelsVisible(true); BarRenderer barrenderer = (BarRenderer) categoryitemrenderer; barrenderer.setItemMargin(0.2); return jfreechart; } public static JPanel createDemoPanel(int operation) { JFreeChart jfreechart = createChart(createDataset()); if(operation == 2){ jfreechart = createChart(createDataset2()); } return new ChartPanel(jfreechart); } /* public static void main(String[] strings) { DrawXYChart DrawXYChart = new DrawXYChart("3D Bar Chart Demo 3", "title2",null,2); DrawXYChart.pack(); RefineryUtilities.centerFrameOnScreen(DrawXYChart); DrawXYChart.setVisible(true); } */ public void windowClosing(java.awt.event.WindowEvent event){ this.dispose(); } }