private void handleAxisRangeControlChanges( PropertyChangeEvent evt, AxisRangeControl axisRangeControl, ValueAxis valueAxis, Range computedAutoRange) { final String propertyName = evt.getPropertyName(); switch (propertyName) { case AxisRangeControl.PROPERTY_NAME_AUTO_MIN_MAX: if (axisRangeControl.isAutoMinMax()) { final double min = computedAutoRange.getLowerBound(); final double max = computedAutoRange.getUpperBound(); axisRangeControl.adjustComponents(min, max, 3); } break; case AxisRangeControl.PROPERTY_NAME_MIN: valueAxis.setLowerBound(axisRangeControl.getMin()); break; case AxisRangeControl.PROPERTY_NAME_MAX: valueAxis.setUpperBound(axisRangeControl.getMax()); break; } }
public String creatchat(CategoryDataset cr, int ss) { JFreeChart chart = ChartFactory.createLineChart( "先来先服务", "进程", "时间", cr, PlotOrientation.VERTICAL, true, true, false); CategoryPlot ccc = (CategoryPlot) chart.getPlot(); // Plot plo=chart.getPlot(); // plo.setDrawingSupplier(getSupplier()); ValueAxis valueaxis = ccc.getRangeAxis(); // getRangeAxis(); // 数据为整型 valueaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // 设定显示范围,即总是显示1-10 if (ss == 1) { Image image; try { image = ImageIO.read(new File("C:/wancheng.png")); chart.setBackgroundImage(image); chart.setBackgroundImageAlpha(1.0f); chart.setBorderPaint(Color.white); ccc.setBackgroundPaint(null); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } valueaxis.setLowerBound(-1); valueaxis.setUpperBound(7); } else { valueaxis.setLowerBound(-1); valueaxis.setUpperBound(7); } CategoryItemRenderer renderer = ccc.getRenderer(); renderer.setSeriesPaint(0, Color.YELLOW); renderer.setSeriesPaint(1, Color.red); renderer.setSeriesPaint(2, Color.green); renderer.setSeriesPaint(3, Color.gray); renderer.setSeriesPaint(4, Color.cyan); renderer.setSeriesPaint(5, Color.magenta); renderer.setSeriesPaint(6, Color.pink); FileOutputStream fos_jpg = null; try { if (ss == 1) { String chaername = "C:/jincheng.png"; fos_jpg = new FileOutputStream(chaername); // 将报表保存为png文件 ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 510); return chaername; } else { String chaername = "C:/wancheng.png"; fos_jpg = new FileOutputStream(chaername); // 将报表保存为png文件 ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 510); return chaername; } } catch (Exception e) { e.printStackTrace(); return null; } finally { try { fos_jpg.close(); System.out.println("create time-createTimeXYChar."); } catch (Exception e) { e.printStackTrace(); } } }
/** シリーズ(縦)軸を設定するメソッド */ public void setSeriesAxisByDoc(Document doc) throws IllegalAccessException, NoSuchFieldException { CategoryPlot categoryPlot = (CategoryPlot) this.getPlot(); Element root = doc.getDocumentElement(); Element chartInfo = (Element) root.getElementsByTagName("ChartInfo").item(0); // データセットリスト ArrayList<Dataset> dataSetList = this.getDataSetList(); int listSize = dataSetList.size(); // データセットの数だけループ for (int i = 0; i < listSize; i++) { // プロットに2番目以降のデータセットを追加 // (1番目のデータセットは、ChartFactory.create** メソッドでチャートオブジェクト作成時に追加済み) if (i != 0) { DefaultCategoryDataset subDataset = (DefaultCategoryDataset) dataSetList.get(i); categoryPlot.setDataset(i, subDataset); // データセットをシリーズ軸に追加 categoryPlot.mapDatasetToRangeAxis(i, 1); } // シリーズ軸のValueAxisオブジェクトをラベル指定で生成 Element series = (Element) chartInfo.getElementsByTagName("Series").item(i); String seriesLabel = series.getElementsByTagName("Label").item(0).getFirstChild().getNodeValue(); ValueAxis valueAxis = null; if (i == 0) { valueAxis = categoryPlot.getRangeAxis(); } else { valueAxis = new NumberAxis(seriesLabel); } // シリーズ軸のラベルカラー、フォントを設定 String seriesLabelColor = series.getElementsByTagName("LabelColor").item(0).getFirstChild().getNodeValue(); valueAxis.setLabelPaint(this.createColor(seriesLabelColor)); // シリーズラベルカラー valueAxis.setLabelFont(this.getFont(doc)); // フォント valueAxis.setTickLabelFont(this.getFont(doc)); // Tickラベルフォント String isAutoRangeEnable = series.getElementsByTagName("isAutoRangeEnable").item(0).getFirstChild().getNodeValue(); // シリーズレンジ手動設定 if ("0".equals(isAutoRangeEnable)) { String maxRange = series.getElementsByTagName("MaxRange").item(0).getFirstChild().getNodeValue(); String minRange = series.getElementsByTagName("MinRange").item(0).getFirstChild().getNodeValue(); // レンジ最大値 valueAxis.setUpperBound(Double.parseDouble(maxRange)); // レンジ最小値 valueAxis.setLowerBound(Double.parseDouble(minRange)); } // プロットに生成したシリーズ軸を設定 if (i != 0) { categoryPlot.setRangeAxis(i, valueAxis); } // レンダラーを取得 CategoryItemRenderer renderer = null; if (i == 0) { renderer = this.createRenderer("byPlot"); } else { renderer = this.createRenderer("create"); } // ツールチップ作成 setToolTip(doc, renderer); // //ドリルダウン設定 // enableDrillDown(LSRenderer,(DefaultCategoryDataset)helper.codeDatasetList.elementAt(i)); if (i != 0) { categoryPlot.setRenderer(i, renderer); // オリジナルのプロットにレンダラーを追加 categoryPlot.setDatasetRenderingOrder(DatasetRenderingOrder.REVERSE); } } // ループ終了 }
/** * Set abcissa upper and lower limits * * @param lower Lower limit * @param upper Upper limit */ @Override public void setAbcissaRange(double lower, double upper) { abcissaAxis.setAutoRange(false); abcissaAxis.setUpperBound(upper); abcissaAxis.setLowerBound(lower); }
protected JFreeChart createChart( DSLAMSource source, String LID, Timeinterval time, Properties properties, GraphRenderingInput input, Map<String, Object> colorScheme, Properties outputProperties) throws IOException { JFreeChart res = null; { JFreeChart chart = null; Timeinterval domainAxisTime = null; // Set 'chart': { String domainAxisTitle = null; // Set 'domainAxisTime': { DateFormat format = (DateFormat) colorScheme.get("date.format"); domainAxisTitle = "Time (" + time.toString(format) + ")"; } chart = ChartFactory.createTimeSeriesChart( null, // chart-title domainAxisTitle, // domain-axis label null, // value-axis label null, // dataset true, // legends required true, // generate tooltips false // generate URLs ); } XYPlot plot = chart.getXYPlot(); plot.setOrientation(PlotOrientation.VERTICAL); plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); plot.getRangeAxis().setFixedDimension(15.0); // Fix the domain axis: { fixDateAxisToTimeinterval(plot, time); domainAxisTime = time; } // Set the y-axis: { String axisTitle = "Count (/900s)"; ValueAxis a = new LogarithmicAxis(axisTitle); a.setLowerBound(0); a.setUpperBound(1000); // TODO: '1000' is '900' rounded up to nearest power of 10! // TODO: Get unit from data-model! // TODO: Get upper bound from data-model! plot.setRangeAxis(a); } String title = getTitle(); setDefaults(chart, colorScheme); setTitle(chart, LID, colorScheme, title, source, time); String filter = ""; // an empty string implies the default filter! // Set 'filter': { if (input != null) { Properties p = input.getProperties(); if (p != null) { String v = p.getProperty("data.filter"); if (v != null) { filter = v; } } } } addData(chart, source, time, filter, properties, colorScheme, outputProperties); if (outputProperties != null) { if (domainAxisTime != null) { outputProperties.setProperty("axis.domain.time", time.toString()); } } res = chart; } return res; }