Esempio n. 1
0
 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;
   }
 }
Esempio n. 2
0
  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();
      }
    }
  }
Esempio n. 3
0
  /** シリーズ(縦)軸を設定するメソッド */
  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;
  }