2

カテゴリ軸として複数の周波数帯を含む棒グラフを作成しています。私がやりたいのは、これらの周波数帯の目に見えるグループを表示することです。

例えば:

Freq x1〜Freq x2 =バンドy(ドメイン軸の値はカテゴリx1、x1.1、x1.2からx2まで)Freq x3〜Freq x4 =バンドz(x3、x3.1 ..... x4)

私がやりたいのは、グラフにバンドYとバンドZのマーカーを表示することです。私が取得する可能性のあるデータセットに基づいて、すべてのカテゴリが存在するわけではないことに注意してください。たとえば、最初の例では、x1からx1.6の値があるため、バンドマーカーはx1からx1.6になります。

私の要件を説明できればと思います。これはJFreeChartで可能ですか?もしそうなら、どうすればこれを達成できますか?

もう少し明確にするために、これが私が達成したい何かの写真です:ここに画像の説明を入力してください

4

1 に答える 1

4

あなたのバンドはカテゴリーに対応していますか?彼らがそうするならば、あなたは使うことができますCategoryMarker

CategoryMarker marker = new CategoryMarker("Category 3");
marker.setLabel("Band Y");
marker.setPaint(Color.red);
marker.setOutlinePaint(Color.red);
marker.setAlpha(0.5f);
marker.setLabelAnchor(RectangleAnchor.TOP);
marker.setLabelTextAnchor(TextAnchor.TOP_CENTER);
marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT);
plot.addDomainMarker(marker, Layer.BACKGROUND);

CategoryMarkerを使用した棒グラフ

Mutli-CategoryMarkerを作成する方法を理解することはできませんが、とを調整してItemMargin追加CategoryMarginすることで、似たようなものを作成できますCategoryMarkers

{
  CategoryMarker marker = new CategoryMarker("Category 2");
  marker.setLabel("Band X");
  marker.setLabelAnchor(RectangleAnchor.TOP);
  marker.setLabelTextAnchor(TextAnchor.TOP_CENTER);
  marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT);
  plot.addDomainMarker(marker, Layer.BACKGROUND);
  }
  {
  CategoryMarker marker = new CategoryMarker("Category 3");
  plot.addDomainMarker(marker, Layer.BACKGROUND);
  }
  renderer.setItemMargin(0.0);
  CategoryAxis axis = plot.getDomainAxis();
  axis.setCategoryMargin(0);
}

ここに画像の説明を入力してください

複数のマーカーを追加するメソッドを作成できます。

private void addMarkers(List<Comparable> keys){
...

より正確な解決策は、レンダラーと関連するコードの独自の実装を作成することです。

于 2012-07-09T08:25:20.670 に答える