List of usage examples for org.jfree.data.category DefaultCategoryDataset getRowKeys
@Override
public List getRowKeys()
From source file:it.eng.spagobi.engines.chart.bo.charttypes.linecharts.LineChart.java
public JFreeChart createChart() { logger.debug("IN"); CategoryPlot plot = new CategoryPlot(); NumberAxis rangeAxis = new NumberAxis("Kpi Values"); rangeAxis.setLabelFont(new Font("Arial", Font.PLAIN, 12)); Color colorLabel = Color.decode("#000000"); rangeAxis.setLabelPaint(colorLabel); rangeAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10)); rangeAxis.setTickLabelPaint(colorLabel); plot.setRangeAxis(rangeAxis);/*from w ww. j a v a2 s. co m*/ CategoryAxis domainAxis = new CategoryAxis(); domainAxis.setLabelFont(new Font("Arial", Font.PLAIN, 10)); domainAxis.setLabelPaint(colorLabel); domainAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10)); domainAxis.setTickLabelPaint(colorLabel); plot.setDomainAxis(domainAxis); plot.setOrientation(PlotOrientation.VERTICAL); plot.setRangeGridlinesVisible(true); plot.setDomainGridlinesVisible(true); //I create a line renderer MyStandardCategoryItemLabelGenerator generator = null; LineAndShapeRenderer lineRenderer = new LineAndShapeRenderer(); lineRenderer.setShapesFilled(true); lineRenderer.setBaseItemLabelGenerator(generator); lineRenderer.setBaseItemLabelFont(new Font("Arial", Font.PLAIN, 12)); lineRenderer.setBaseItemLabelPaint(colorLabel); lineRenderer.setBaseItemLabelsVisible(true); DefaultCategoryDataset datasetLine = (DefaultCategoryDataset) datasetMap.getDatasets().get("line"); for (Iterator iterator = datasetLine.getRowKeys().iterator(); iterator.hasNext();) { String serName = (String) iterator.next(); String labelName = ""; int index = -1; index = datasetLine.getRowIndex(serName); Color color = Color.decode("#990200"); lineRenderer.setSeriesPaint(index, color); } plot.setDataset(0, datasetLine); plot.setRenderer(0, lineRenderer); plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45); JFreeChart chart = new JFreeChart(plot); logger.debug("Chart created"); TextTitle title = new TextTitle(name, new Font("Arial", Font.BOLD, 16), Color.decode("#990200"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.setTitle(title); TextTitle subTitle = new TextTitle(subName, new Font("Arial", Font.PLAIN, 12), Color.decode("#000000"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.addSubtitle(subTitle); TextTitle subTitle2 = new TextTitle(subName, new Font("Arial", Font.PLAIN, 8), Color.decode("#FFFFFF"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.addSubtitle(subTitle2); chart.removeLegend(); chart.setBackgroundPaint(Color.white); logger.debug("OUT"); return chart; }
From source file:it.eng.spagobi.engines.kpi.bo.charttypes.trendcharts.LineChart.java
public JFreeChart createChart() { logger.debug("IN"); CategoryPlot plot = new CategoryPlot(); IMessageBuilder msgBuilder = MessageBuilderFactory.getMessageBuilder(); String rangeAxisName = msgBuilder.getMessage("sbi.kpi.rangeAxisName"); NumberAxis rangeAxis = new NumberAxis(rangeAxisName); rangeAxis.setLabelFont(new Font("Arial", Font.PLAIN, 12)); Color colorLabel = Color.decode("#000000"); rangeAxis.setLabelPaint(colorLabel); rangeAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10)); rangeAxis.setTickLabelPaint(colorLabel); plot.setRangeAxis(rangeAxis);/*from w w w . j a v a 2 s . c o m*/ CategoryAxis domainAxis = new CategoryAxis(); domainAxis.setLabelFont(new Font("Arial", Font.PLAIN, 10)); domainAxis.setLabelPaint(colorLabel); domainAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10)); domainAxis.setTickLabelPaint(colorLabel); plot.setDomainAxis(domainAxis); plot.setOrientation(PlotOrientation.VERTICAL); plot.setRangeGridlinesVisible(true); plot.setDomainGridlinesVisible(true); //I create a line renderer MyStandardCategoryItemLabelGenerator generator = null; LineAndShapeRenderer lineRenderer = new LineAndShapeRenderer(); lineRenderer.setShapesFilled(true); lineRenderer.setBaseItemLabelGenerator(generator); lineRenderer.setBaseItemLabelFont(new Font("Arial", Font.PLAIN, 12)); lineRenderer.setBaseItemLabelPaint(colorLabel); lineRenderer.setBaseItemLabelsVisible(true); DefaultCategoryDataset datasetLine = (DefaultCategoryDataset) datasetMap.getDatasets().get("line"); for (Iterator iterator = datasetLine.getRowKeys().iterator(); iterator.hasNext();) { String serName = (String) iterator.next(); String labelName = ""; int index = -1; index = datasetLine.getRowIndex(serName); Color color = Color.decode("#990200"); lineRenderer.setSeriesPaint(index, color); } plot.setDataset(0, datasetLine); plot.setRenderer(0, lineRenderer); plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45); JFreeChart chart = new JFreeChart(plot); logger.debug("Chart created"); TextTitle title = new TextTitle(name, new Font("Arial", Font.BOLD, 16), Color.decode("#990200"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.setTitle(title); TextTitle subTitle = new TextTitle(subName, new Font("Arial", Font.PLAIN, 12), Color.decode("#000000"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.addSubtitle(subTitle); TextTitle subTitle2 = new TextTitle(subName, new Font("Arial", Font.PLAIN, 8), Color.decode("#FFFFFF"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS); chart.addSubtitle(subTitle2); chart.removeLegend(); chart.setBackgroundPaint(Color.white); logger.debug("OUT"); return chart; }
From source file:msi.gama.outputs.layers.charts.ChartJFreeChartOutputRadar.java
@Override protected void resetSerie(final IScope scope, final String serieid) { // TODO Auto-generated method stub chart.getPlot();/* w w w . j a v a 2 s . c o m*/ final ChartDataSeries dataserie = chartdataset.getDataSeries(scope, serieid); // DefaultCategoryDataset serie=((DefaultCategoryDataset) // jfreedataset.get(IdPosition.get(dataserie.getSerieId(scope)))); final DefaultCategoryDataset serie = (DefaultCategoryDataset) jfreedataset.get(0); if (serie.getRowKeys().contains(serieid)) serie.removeRow(serieid); final ArrayList<String> CValues = dataserie.getCValues(scope); final ArrayList<Double> YValues = dataserie.getYValues(scope); final ArrayList<Double> SValues = dataserie.getSValues(scope); if (CValues.size() > 0) { int deb = 0; if (this.usexrangeinterval && CValues.size() > this.xrangeinterval) deb = CValues.size() - (int) this.xrangeinterval; for (int i = deb; i < CValues.size(); i++) { serie.addValue(YValues.get(i), serieid, CValues.get(i - deb)); // ((ExtendedCategoryAxis)domainAxis).addSubLabel(CValues.get(i), // serieid);; } } if (SValues.size() > 0) { // what to do with Z values?? } this.resetRenderer(scope, serieid); }
From source file:edu.uara.wrappers.customcharts.CustomBarChart.java
@Override public void updateChart(CustomDatasetTable dsTable, ITableObject source) { if (ds != null)// {//from ww w . ja v a 2 s. c o m TableOrder tableOrder = TableOrder.BY_ROW; DefaultCategoryDataset dataset = (DefaultCategoryDataset) ds; List rows = dataset.getRowKeys(); List cols = dataset.getColumnKeys(); String[] rowLabels = dsTable.getRowLabels(); String[] columnLabels = dsTable.getColumnLabels(source); for (int i = 0; i < rows.size(); i++) { if (!rows.get(i).toString().equals(rowLabels)) { tableOrder = TableOrder.BY_COLUMN; break; } } if (tableOrder == TableOrder.BY_ROW) { double[][] values = dsTable.getTableContentAsValue(source); for (int r = 0; r < rowLabels.length; r++) { for (int c = 0; c < columnLabels.length; c++) { dataset.setValue(values[r][c], rowLabels[r], columnLabels[c]); } } } else { double[][] values = dsTable.getTableContentAsValueTranspose(source); for (int r = 0; r < rows.size(); r++) { for (int c = 0; c < cols.size(); c++) { dataset.setValue(values[r][c], rows.get(r).toString(), cols.get(c).toString()); } } } } }
From source file:msi.gama.outputs.layers.charts.ChartJFreeChartOutputHistogram.java
@Override protected void resetSerie(final IScope scope, final String serieid) { // TODO Auto-generated method stub final ChartDataSeries dataserie = chartdataset.getDataSeries(scope, serieid); // DefaultCategoryDataset serie=((DefaultCategoryDataset) // jfreedataset.get(IdPosition.get(dataserie.getSerieId(scope)))); final DefaultCategoryDataset serie = (DefaultCategoryDataset) jfreedataset.get(0); if (serie.getRowKeys().contains(serieid)) { serie.removeRow(serieid);//from w w w. j ava 2 s . c om } final ArrayList<String> CValues = dataserie.getCValues(scope); final ArrayList<Double> YValues = dataserie.getYValues(scope); final ArrayList<Double> SValues = dataserie.getSValues(scope); if (CValues.size() > 0) { // TODO Hack to speed up, change!!! // final CategoryAxis domainAxis = ((CategoryPlot) // this.chart.getPlot()).getDomainAxis(); final NumberAxis rangeAxis = (NumberAxis) ((CategoryPlot) this.chart.getPlot()).getRangeAxis(); rangeAxis.setAutoRange(false); for (int i = 0; i < CValues.size(); i++) { if (getY_LogScale(scope)) { final double val = YValues.get(i); if (val <= 0) { throw GamaRuntimeException.warning("Log scale with <=0 value:" + val, scope); } else { serie.addValue(YValues.get(i), serieid, CValues.get(i)); } } else { serie.addValue(YValues.get(i), serieid, CValues.get(i)); } // ((ExtendedCategoryAxis)domainAxis).addSubLabel(CValues.get(i), // serieid);; } } if (SValues.size() > 0) { // what to do with Z values?? } this.resetRenderer(scope, serieid); }
From source file:uk.ac.lkl.cram.ui.report.Report.java
private void addLearnerFeedback() { MainDocumentPart mdp = wordMLPackage.getMainDocumentPart(); mdp.addStyledParagraphOfText("Heading1", "Source of Learner Feedback"); FeedbackChartMaker maker = new FeedbackChartMaker(module); JFreeChart chart = maker.getChartPanel().getChart(); DefaultCategoryDataset dataset = (DefaultCategoryDataset) maker.getDataset(); Tbl table = factory.createTbl();/*from w w w . j ava2 s .com*/ Comparable columnKey = (Comparable) dataset.getColumnKeys().get(0); boolean first = true; for (Object key : dataset.getRowKeys()) { Tr tableRow = factory.createTr(); Tc tableCell = factory.createTc(); TcPr tcpr = factory.createTcPr(); tableCell.setTcPr(tcpr); VMerge vMerge = factory.createTcPrInnerVMerge(); tcpr.setVMerge(vMerge); if (first) { vMerge.setVal("restart"); /* Specify the height and width of the Pie Chart */ int width = (int) (480f * 0.8f); /* Width of the chart */ int height = (int) (360f * 0.8f); /* Height of the chart */ tableCell.getContent().add(createChart(chart, width, height)); first = false; } else { tableCell.getContent().add(factory.createP()); } tableRow.getContent().add(tableCell); double value = (Double) dataset.getValue((Comparable) key, columnKey); addSimpleTableCell(tableRow, key.toString()); addTableCell(tableRow, FLOAT_FORMATTER.format(value) + " hours", JcEnumeration.RIGHT, false); table.getContent().add(tableRow); } addBorders(table); mdp.addObject(table); }
From source file:uk.ac.lkl.cram.ui.report.Report.java
private void addLearningExperience() { MainDocumentPart mdp = wordMLPackage.getMainDocumentPart(); mdp.addStyledParagraphOfText("Heading1", "Learning Experience"); LearningExperienceChartMaker maker = new LearningExperienceChartMaker(module); JFreeChart chart = maker.getChartPanel().getChart(); DefaultCategoryDataset dataset = (DefaultCategoryDataset) maker.getDataset(); Tbl table = factory.createTbl();/* www .j av a2 s .co m*/ double total = 0f; Comparable columnKey = (Comparable) dataset.getColumnKeys().get(0); for (Object key : dataset.getRowKeys()) { total += (Double) dataset.getValue((Comparable) key, columnKey); } boolean first = true; for (Object key : dataset.getRowKeys()) { Tr tableRow = factory.createTr(); Tc tableCell = factory.createTc(); TcPr tcpr = factory.createTcPr(); tableCell.setTcPr(tcpr); VMerge vMerge = factory.createTcPrInnerVMerge(); tcpr.setVMerge(vMerge); if (first) { vMerge.setVal("restart"); /* Specify the height and width of the Pie Chart */ int width = (int) (480f * 0.9f); /* Width of the chart */ int height = (int) (180f * 0.9f); /* Height of the chart */ tableCell.getContent().add(createChart(chart, width, height)); first = false; } else { tableCell.getContent().add(factory.createP()); } tableRow.getContent().add(tableCell); double percent = (Double) dataset.getValue((Comparable) key, columnKey) / total; addSimpleTableCell(tableRow, key.toString()); addTableCell(tableRow, PERCENT_FORMATTER.format(percent), JcEnumeration.RIGHT, false); table.getContent().add(tableRow); } addBorders(table); mdp.addObject(table); }
From source file:it.eng.spagobi.engines.chart.bo.charttypes.barcharts.BarCharts.java
/** * Limits the dataset to a particular serie. * /*from ww w .ja va 2 s .c om*/ * @param dataset the dataset * @param serie the serie * * @return the dataset */ public Dataset filterDatasetSeries(Dataset dataset, Vector series) { logger.debug("IN"); DefaultCategoryDataset catDataset = (DefaultCategoryDataset) dataset; //keeps track of wich series has to be shown currentSeries = series; //List rowKeys=new Vector(); List rowKeys = new Vector(catDataset.getRowKeys()); for (Iterator iterator = rowKeys.iterator(); iterator.hasNext();) { String row = (String) iterator.next(); if (!(series.contains(row))) { catDataset.removeRow(row); seriesNames.remove(row); } } logger.debug("OUT"); return catDataset; }
From source file:com.compomics.pepshell.view.statistics.RatioStatisticsPane.java
private CategoryDataset createRatioDataset(PepshellProtein aPepshellProtein) { DefaultCategoryDataset returnset = new DefaultCategoryDataset(); //PepshellProtein protein = experimentGroup.get(0).getProteins().get(experimentGroup.get(0).getProteins().indexOf(aPepshellProtein)); if (aPepshellProtein != null) { for (Experiment anExperiment : experimentGroup) { if (anExperiment.getProteins().indexOf(aPepshellProtein) != -1) { PepshellProtein protein = anExperiment.getProteins() .get(anExperiment.getProteins().indexOf(aPepshellProtein)); List<PeptideGroup> sortedCopy = protein.getPeptideGroups().stream() .sorted(Comparator .comparing(e -> e.getRepresentativePeptide().getBeginningProteinMatch())) .collect(Collectors.toList()); for (PeptideGroup aPeptideGroup : sortedCopy) { PeptideInterface aPeptide = aPeptideGroup.getRepresentativePeptide(); if (aPeptide instanceof QuantedPeptide && ((QuantedPeptide) aPeptide).getRatio() != null) { Double value = Math.log(((QuantedPeptide) aPeptide).getRatio()) / Math.log(2); returnset.addValue(value, anExperiment.getExperimentName(), String.valueOf(aPeptide.getBeginningProteinMatch())); //this part can be put in it's own method for (Experiment checkList : experimentGroup) { if (!checkList.equals(anExperiment) && returnset.getRowKeys().contains(checkList.getExperimentName())) { if (returnset.getValue(checkList.getExperimentName(), String.valueOf(aPeptide.getBeginningProteinMatch())) == null) { returnset.addValue(null, checkList.getExperimentName(), String.valueOf(aPeptide.getBeginningProteinMatch())); }/*from w w w . ja v a 2 s .c o m*/ } } } } } } } return returnset; }
From source file:it.eng.spagobi.engines.chart.bo.charttypes.barcharts.OverlaidStackedBarLine.java
public JFreeChart createChart(DatasetMap datasets) { // create the first renderer... CategoryPlot plot = new CategoryPlot(); NumberFormat nf = NumberFormat.getNumberInstance(locale); NumberAxis rangeAxis = new NumberAxis(getValueLabel()); rangeAxis.setLabelFont(new Font(styleXaxesLabels.getFontName(), Font.PLAIN, styleXaxesLabels.getSize())); rangeAxis.setLabelPaint(styleXaxesLabels.getColor()); rangeAxis/*from w w w . j a va 2s . co m*/ .setTickLabelFont(new Font(styleXaxesLabels.getFontName(), Font.PLAIN, styleXaxesLabels.getSize())); rangeAxis.setTickLabelPaint(styleXaxesLabels.getColor()); rangeAxis.setNumberFormatOverride(nf); plot.setRangeAxis(rangeAxis); if (rangeIntegerValues == true) { rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); } CategoryAxis domainAxis = new CategoryAxis(getCategoryLabel()); domainAxis.setLabelFont(new Font(styleYaxesLabels.getFontName(), Font.PLAIN, styleYaxesLabels.getSize())); domainAxis.setLabelPaint(styleYaxesLabels.getColor()); domainAxis .setTickLabelFont(new Font(styleYaxesLabels.getFontName(), Font.PLAIN, styleYaxesLabels.getSize())); domainAxis.setTickLabelPaint(styleYaxesLabels.getColor()); plot.setDomainAxis(domainAxis); plot.setOrientation(PlotOrientation.VERTICAL); plot.setRangeGridlinesVisible(true); plot.setDomainGridlinesVisible(true); DefaultCategoryDataset datasetBar = (DefaultCategoryDataset) datasets.getDatasets().get("stackedbar"); //I create one bar renderer and one line MyStandardCategoryItemLabelGenerator generator = null; if (additionalLabels) { generator = new MyStandardCategoryItemLabelGenerator(catSerLabels, "{1}", NumberFormat.getInstance()); } if (useBars) { CategoryItemRenderer barRenderer = new StackedBarRenderer(); if (maxBarWidth != null) { ((BarRenderer) barRenderer).setMaximumBarWidth(maxBarWidth.doubleValue()); } if (additionalLabels) { barRenderer.setBaseItemLabelGenerator(generator); double orient = (-Math.PI / 2.0); if (styleValueLabels.getOrientation().equalsIgnoreCase("horizontal")) { orient = 0.0; } barRenderer.setBaseItemLabelFont( new Font(styleValueLabels.getFontName(), Font.PLAIN, styleValueLabels.getSize())); barRenderer.setBaseItemLabelPaint(styleValueLabels.getColor()); barRenderer.setBaseItemLabelsVisible(true); barRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, orient)); barRenderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, orient)); } if (colorMap != null) { for (Iterator iterator = datasetBar.getRowKeys().iterator(); iterator.hasNext();) { String serName = (String) iterator.next(); String labelName = ""; int index = -1; if (seriesCaptions != null && seriesCaptions.size() > 0) { labelName = serName; serName = (String) seriesCaptions.get(serName); index = datasetBar.getRowIndex(labelName); } else index = datasetBar.getRowIndex(serName); Color color = (Color) colorMap.get(serName); if (color != null) { barRenderer.setSeriesPaint(index, color); } } } // add tooltip if enabled if (enableToolTips) { MyCategoryToolTipGenerator generatorToolTip = new MyCategoryToolTipGenerator(freeToolTips, seriesTooltip, categoriesTooltip, seriesCaptions); barRenderer.setToolTipGenerator(generatorToolTip); } //defines url for drill boolean document_composition = false; if (mode.equalsIgnoreCase(SpagoBIConstants.DOCUMENT_COMPOSITION)) document_composition = true; logger.debug("Calling Url Generation"); MyCategoryUrlGenerator mycatUrl = null; if (super.rootUrl != null) { logger.debug("Set MycatUrl"); mycatUrl = new MyCategoryUrlGenerator(super.rootUrl); mycatUrl.setDocument_composition(document_composition); mycatUrl.setCategoryUrlLabel(super.categoryUrlName); mycatUrl.setSerieUrlLabel(super.serieUrlname); mycatUrl.setDrillDocTitle(drillDocTitle); mycatUrl.setTarget(target); } if (mycatUrl != null) { barRenderer.setItemURLGenerator(mycatUrl); } plot.setDataset(1, datasetBar); plot.setRenderer(1, barRenderer); } if (useLines) { LineAndShapeRenderer lineRenderer = new LineAndShapeRenderer(); //lineRenderer.setShapesFilled(false); lineRenderer.setShapesFilled(true); if (additionalLabels) { lineRenderer.setBaseItemLabelGenerator(generator); lineRenderer.setBaseItemLabelFont( new Font(defaultLabelsStyle.getFontName(), Font.PLAIN, defaultLabelsStyle.getSize())); lineRenderer.setBaseItemLabelPaint(defaultLabelsStyle.getColor()); lineRenderer.setBaseItemLabelsVisible(true); } DefaultCategoryDataset datasetLine = (DefaultCategoryDataset) datasets.getDatasets().get("line"); if (enableToolTips) { MyCategoryToolTipGenerator generatorToolTip = new MyCategoryToolTipGenerator(freeToolTips, seriesTooltip, categoriesTooltip, seriesCaptions); lineRenderer.setToolTipGenerator(generatorToolTip); } if (colorMap != null) { for (Iterator iterator = datasetLine.getRowKeys().iterator(); iterator.hasNext();) { String serName = (String) iterator.next(); String labelName = ""; int index = -1; if (seriesCaptions != null && seriesCaptions.size() > 0) { labelName = serName; serName = (String) seriesCaptions.get(serName); index = datasetLine.getRowIndex(labelName); } else index = datasetLine.getRowIndex(serName); Color color = (Color) colorMap.get(serName); if (color != null) { lineRenderer.setSeriesPaint(index, color); } } } plot.setDataset(0, datasetLine); plot.setRenderer(0, lineRenderer); } if (secondAxis) { NumberAxis na = new NumberAxis(secondAxisLabel); na.setLabelFont(new Font(styleXaxesLabels.getFontName(), Font.PLAIN, styleXaxesLabels.getSize())); na.setLabelPaint(styleXaxesLabels.getColor()); na.setTickLabelFont(new Font(styleXaxesLabels.getFontName(), Font.PLAIN, styleXaxesLabels.getSize())); na.setTickLabelPaint(styleXaxesLabels.getColor()); na.setUpperMargin(0.10); if (rangeIntegerValues == true) { na.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); } na.setNumberFormatOverride(nf); plot.setRangeAxis(1, na); plot.mapDatasetToRangeAxis(0, 1); } //plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45); JFreeChart chart = new JFreeChart(plot); TextTitle title = setStyleTitle(name, styleTitle); chart.setTitle(title); if (subName != null && !subName.equals("")) { TextTitle subTitle = setStyleTitle(subName, styleSubTitle); chart.addSubtitle(subTitle); } chart.setBackgroundPaint(Color.white); if (legend == true) drawLegend(chart); return chart; }