private static void configureLineAndShapeRenderer( LineAndShapeRenderer renderer, ValueSource valueSource, PlotInstance plotInstance) { ValueSourceData valueSourceData = plotInstance.getPlotData().getValueSourceData(valueSource); int seriesCount = valueSourceData.getSeriesCount(); SeriesFormat seriesFormat = valueSource.getSeriesFormat(); DimensionConfig domainConfig = valueSource.getDomainConfig(); DimensionConfig colorDimensionConfig = plotInstance.getCurrentPlotConfigurationClone().getDimensionConfig(PlotDimension.COLOR); DimensionConfig shapeDimensionConfig = plotInstance.getCurrentPlotConfigurationClone().getDimensionConfig(PlotDimension.SHAPE); renderer.setDefaultEntityRadius(4); // loop all series and set series format for (int seriesIdx = 0; seriesIdx < seriesCount; ++seriesIdx) { // configure linestyle if (seriesFormat.getLineStyle() != LineStyle.NONE) { renderer.setSeriesLinesVisible(seriesIdx, true); renderer.setSeriesStroke(seriesIdx, seriesFormat.getStroke(), false); } else { renderer.setSeriesLinesVisible(seriesIdx, false); } // configure series shape if necessary if (!SeriesFormat.calculateIndividualFormatForEachItem(domainConfig, shapeDimensionConfig)) { if (seriesFormat.getItemShape() != ItemShape.NONE) { renderer.setSeriesShapesVisible(seriesIdx, true); renderer.setSeriesShape(seriesIdx, seriesFormat.getItemShape().getShape()); } else { renderer.setSeriesShapesVisible(seriesIdx, false); } } // configure series color if necessary if (!SeriesFormat.calculateIndividualFormatForEachItem(domainConfig, colorDimensionConfig)) { Color itemColor = seriesFormat.getItemColor(); renderer.setSeriesPaint(seriesIdx, itemColor); } renderer.setSeriesOutlinePaint(seriesIdx, PlotConfiguration.DEFAULT_SERIES_OUTLINE_PAINT); renderer.setUseOutlinePaint(true); } }
public JFreeChart createChart(int size) { CategoryDataset paramCategoryDataset = createDataset(size); // 创建主题样式 StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); // 设置标题字体 standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20)); // 设置图例的字体 standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 12)); // 设置轴向的字体 standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 12)); // 应用主题样式 ChartFactory.setChartTheme(standardChartTheme); JFreeChart localJFreeChart = ChartFactory.createLineChart( title, "期号", yTitle, paramCategoryDataset, PlotOrientation.VERTICAL, true, true, false); CategoryPlot localCategoryPlot = (CategoryPlot) localJFreeChart.getPlot(); // SymbolAxis localSymbolAxis = new SymbolAxis("个数", new String[] { // "0", "1", "2", "3", "4", "5", "6" }); // localCategoryPlot.setRangeAxis(localSymbolAxis); ChartUtilities.applyCurrentTheme(localJFreeChart); LineAndShapeRenderer xyitem = (LineAndShapeRenderer) localCategoryPlot.getRenderer(); CategoryPlot plot = (CategoryPlot) localJFreeChart.getPlot(); // 设置网格背景颜色 plot.setBackgroundPaint(Color.white); // 设置网格竖线颜色 plot.setDomainGridlinePaint(Color.black); // 设置网格横线颜色 plot.setRangeGridlinePaint(Color.black); // 设置曲线图与xy轴的距离 plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 0D)); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); rangeAxis.setAutoRangeIncludesZero(true); if ("和值".equals(type)) { rangeAxis.setLowerBound(70); rangeAxis.setTickUnit(new NumberTickUnit(10)); } else { rangeAxis.setLowerBound(0); rangeAxis.setTickUnit(new NumberTickUnit(1)); } // rangeAxis.setUpperMargin(0.20); // 设置曲线显示各数据点的值 xyitem.setBaseItemLabelsVisible(true); xyitem.setBasePositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); xyitem.setSeriesStroke(0, new BasicStroke(1.5F)); xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14)); xyitem.setSeriesShapesVisible(0, true); plot.setRenderer(xyitem); return localJFreeChart; }