List of usage examples for org.jfree.chart.labels ItemLabelPosition ItemLabelPosition
public ItemLabelPosition(ItemLabelAnchor itemLabelAnchor, TextAnchor textAnchor, TextAnchor rotationAnchor, double angle)
From source file:KIDLYFactory.java
/** * Creates a waterfall chart. The chart object returned by this method * uses a {@link CategoryPlot} instance as the plot, with a * {@link CategoryAxis} for the domain axis, a {@link NumberAxis} as the * range axis, and a {@link WaterfallBarRenderer} as the renderer. * * @param title the chart title (<code>null</code> permitted). * @param categoryAxisLabel the label for the category axis * (<code>null</code> permitted). * @param valueAxisLabel the label for the value axis (<code>null</code> * permitted)./*from www. j av a2s . c o m*/ * @param dataset the dataset for the chart (<code>null</code> permitted). * @param orientation the plot orientation (horizontal or vertical) * (<code>null</code> NOT permitted). * @param legend a flag specifying whether or not a legend is required. * @param tooltips configure chart to generate tool tips? * @param urls configure chart to generate URLs? * * @return A waterfall chart. */ public static JFreeChart createWaterfallChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) { if (orientation == null) { throw new IllegalArgumentException("Null 'orientation' argument."); } CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel); categoryAxis.setCategoryMargin(0.0); ValueAxis valueAxis = new NumberAxis(valueAxisLabel); WaterfallBarRenderer renderer = new WaterfallBarRenderer(); if (orientation == PlotOrientation.HORIZONTAL) { ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, Math.PI / 2.0); renderer.setBasePositiveItemLabelPosition(position); renderer.setBaseNegativeItemLabelPosition(position); } else if (orientation == PlotOrientation.VERTICAL) { ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0); renderer.setBasePositiveItemLabelPosition(position); renderer.setBaseNegativeItemLabelPosition(position); } if (tooltips) { StandardCategoryToolTipGenerator generator = new StandardCategoryToolTipGenerator(); renderer.setBaseToolTipGenerator(generator); } if (urls) { renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator()); } CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer); plot.clearRangeMarkers(); Marker baseline = new ValueMarker(0.0); baseline.setPaint(Color.black); plot.addRangeMarker(baseline, Layer.FOREGROUND); plot.setOrientation(orientation); JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend); currentTheme.apply(chart); return chart; }
From source file:search2go.UIFrame.java
private void btnFrequencyGraphActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFrequencyGraphActionPerformed if (currentProj.isAvaialable()) { if (currentProj.checkStage(3)) { if (gTerms.getGTerm(txtFilterGOID.getText()) == null && !("".equals(txtFilterGOID.getText()))) javax.swing.JOptionPane.showMessageDialog(this, "GO ID provded not in current dataset. Please ensure you have opened the correct project and/or used the format 'GO:#######' (without quotes)"); else { try { graphViewer.close(); } catch (NullPointerException e) { }//from w w w . jav a2 s . c o m pnlChartHolder.removeAll(); gTerms.getFilter().setFamilyFilter(gTerms.getGTerm(txtFilterGOID.getText())); if (!txtMinHits.getText().equals("")) gTerms.getFilter().setMinFreq(Integer.parseInt(txtMinHits.getText())); else gTerms.getFilter().setMinFreq(0); if (!txtMaxHits.getText().equals("")) gTerms.getFilter().setMaxFreq(Integer.parseInt(txtMaxHits.getText())); else gTerms.getFilter().setMaxFreq(-1); prgChart.setIndeterminate(true); try { ProcessSequence graphSequence = gTerms.getFamilyFilterSequence(currentProj); graphSequence.setTail(new ProcessSequenceEnd() { @Override public void run() { new Thread(new Runnable() { private JFreeChart barChart; private DefaultCategoryDataset dataset = new DefaultCategoryDataset(); @Override public void run() { GTermSet termSet = gTerms.getFilteredTerms(); termSet.freqSort(); Collections.reverse(termSet.getGTerms()); for (GTerm term : termSet.getGTerms()) { dataset.addValue(term.getFrequency(), "GO Term Frequency", term.getID()); } barChart = ChartFactory.createBarChart("GO Term Frequency", "GO Terms", "Frequency", dataset, PlotOrientation.VERTICAL, true, true, false); BarRenderer renderer = (BarRenderer) barChart.getCategoryPlot() .getRenderer(); ChartPanel chartPanel = new ChartPanel(barChart); barChart.getCategoryPlot().setRenderer(renderer); CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator( "{1}", NumberFormat.getInstance()); renderer.setItemLabelGenerator(generator); renderer.setItemLabelFont(new Font("SansSerif", Font.PLAIN, 12)); renderer.setItemLabelsVisible(true); renderer.setPositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, -Math.PI / 2)); chartPanel.addChartMouseListener(new TermClickListener()); pnlChartHolder.add(chartPanel); pnlChartHolder.validate(); prgChart.setIndeterminate(false); } }).start(); } }); graphSequence.start(); } catch (IOException ex) { System.out.println("Coud not generate graph"); } } } else javax.swing.JOptionPane.showMessageDialog(this, "Identification data unavailable. Please perform identification or load a project with completed identification to continue."); } else javax.swing.JOptionPane.showMessageDialog(this, "Another function is currently being performed on this project, please wait until completion or manually stop the process."); }
From source file:com.naryx.tagfusion.cfm.tag.awt.cfCHART.java
private void setCategoryItemLabelsData(AbstractCategoryItemRenderer renderer, cfCHARTSERIESData seriesData) throws cfmRunTimeException { // Set them as visible renderer.setItemLabelsVisible(true); // Set their color renderer.setItemLabelPaint(convertStringToColor(seriesData.getDataLabelColor())); // Set their font renderer.setItemLabelFont(getFont(seriesData.getDataLabelFont(), seriesData.getDataLabelFontBold(), seriesData.getDataLabelFontItalic(), seriesData.getDataLabelFontSize())); // Set the item label position for negative data values double degrees = seriesData.getDataLabelAngle(); double radians = Math.toRadians(degrees); String negPosition = seriesData.getNegativeDataLabelPosition(); if (negPosition.equals("top")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("top_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("left")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (negPosition.equals("left_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE9, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (negPosition.equals("center")) renderer.setNegativeItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("right")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (negPosition.equals("right_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (negPosition.equals("bottom_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("bottom")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); // Set the item label position for positive data values String posPosition = seriesData.getPositiveDataLabelPosition(); if (posPosition.equals("top")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("top_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("left")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (posPosition.equals("left_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE9, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (posPosition.equals("center")) renderer.setPositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("right")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (posPosition.equals("right_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (posPosition.equals("bottom_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("bottom")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); // With Bar graphs and an inside position, we want to force the item labels // to be drawn even if they don't fit inside the bar graph. if (renderer instanceof BarRenderer) { ((BarRenderer) renderer).setNegativeItemLabelPositionFallback(renderer.getNegativeItemLabelPosition()); ((BarRenderer) renderer).setPositiveItemLabelPositionFallback(renderer.getPositiveItemLabelPosition()); }/* w w w.j a v a 2s . co m*/ }
From source file:com.naryx.tagfusion.cfm.tag.awt.cfCHART.java
private void setXYItemLabelsData(XYItemRenderer renderer, cfCHARTSERIESData seriesData) throws cfmRunTimeException { // Set them as visible renderer.setItemLabelsVisible(true); // Set their color renderer.setItemLabelPaint(convertStringToColor(seriesData.getDataLabelColor())); // Set their font renderer.setItemLabelFont(getFont(seriesData.getDataLabelFont(), seriesData.getDataLabelFontBold(), seriesData.getDataLabelFontItalic(), seriesData.getDataLabelFontSize())); // Set the item label position for negative data values double degrees = seriesData.getDataLabelAngle(); double radians = Math.toRadians(degrees); String negPosition = seriesData.getNegativeDataLabelPosition(); if (negPosition.equals("top")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("top_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("left")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (negPosition.equals("left_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE9, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (negPosition.equals("center")) renderer.setNegativeItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("right")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (negPosition.equals("right_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (negPosition.equals("bottom_inside")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (negPosition.equals("bottom")) renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); // Set the item label position for positive data values String posPosition = seriesData.getPositiveDataLabelPosition(); if (posPosition.equals("top")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("top_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("left")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (posPosition.equals("left_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE9, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (posPosition.equals("center")) renderer.setPositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("right")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT, TextAnchor.CENTER, radians)); else if (posPosition.equals("right_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, radians)); else if (posPosition.equals("bottom_inside")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, radians)); else if (posPosition.equals("bottom")) renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER, TextAnchor.CENTER, radians)); }
From source file:org.jfree.chart.ChartFactory.java
/** * Creates a waterfall chart. The chart object returned by this method * uses a {@link CategoryPlot} instance as the plot, with a * {@link CategoryAxis} for the domain axis, a {@link NumberAxis} as the * range axis, and a {@link WaterfallBarRenderer} as the renderer. * * @param title the chart title ({@code null} permitted). * @param categoryAxisLabel the label for the category axis * ({@code null} permitted). * @param valueAxisLabel the label for the value axis ({@code null} * permitted)./*from w w w . jav a 2 s .c o m*/ * @param dataset the dataset for the chart ({@code null} permitted). * * @return A waterfall chart. */ public static JFreeChart createWaterfallChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset) { CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel); categoryAxis.setCategoryMargin(0.0); ValueAxis valueAxis = new NumberAxis(valueAxisLabel); WaterfallBarRenderer renderer = new WaterfallBarRenderer(); // FIXME create a new method for the horizontal version // if (orientation == PlotOrientation.HORIZONTAL) { // ItemLabelPosition position = new ItemLabelPosition( // ItemLabelAnchor.CENTER, TextAnchor.CENTER, // TextAnchor.CENTER, Math.PI / 2.0); // renderer.setBasePositiveItemLabelPosition(position); // renderer.setBaseNegativeItemLabelPosition(position); // } ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0); renderer.setDefaultPositiveItemLabelPosition(position); renderer.setDefaultNegativeItemLabelPosition(position); StandardCategoryToolTipGenerator generator = new StandardCategoryToolTipGenerator(); renderer.setDefaultToolTipGenerator(generator); CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer); plot.clearRangeMarkers(); Marker baseline = new ValueMarker(0.0); baseline.setPaint(Color.BLACK); plot.addRangeMarker(baseline, Layer.FOREGROUND); JFreeChart chart = new JFreeChart(title, plot); currentTheme.apply(chart); return chart; }