私はJFreeChartを使用して、イメージとしてエクスポートされ、自動的に生成されたドキュメントに埋め込まれた折れ線グラフを作成しています。私は値を表示するために使用しているコードは次のようになりラベル値とエラーバーをJFreeChart折れ線グラフに追加するにはどうすればいいですか?
::私もにエラーバーを追加したい
LineAndShapeRenderer renderer = new LineAndShapeRenderer(true, false);
chart.getCategoryPlot().setRenderer(renderer);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getNumberInstance()));
renderer.setBaseItemLabelsVisible(true);
例えば1の単純な折れ線グラフは次のようになります。各ポイントの標準偏差を表示するには、StatisticalLineAndShapeRendererを使用して(もちろんデータセットにエラー値を追加して)これを行うことができます。
StatisticalLineAndShapeRenderer renderer = new StatisticalLineAndShapeRenderer(true, false);
chart.getCategoryPlot().setRenderer(renderer);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getNumberInstance()));
renderer.setBaseItemLabelsVisible(true);
このコードでは、グラフにエラーバーが表示されますが、ラベルは消えています。それがこの画像で見ることができるように:
私はエラーバーとラベルの両方を備えたオンラインの例を見つけることを試みたが、私はそうしなかったしました。 Statustical Rendererを使用しているときにラベルが消えてしまう理由は何ですか?
EDIT:最小限の自己完結型の例を追加しました。
DefaultStatisticalCategoryDataset dataset = new DefaultStatisticalCategoryDataset();
dataset.add(1, 0.1, "serie", "A");
dataset.add(2, 0.4, "serie", "B");
dataset.add(2, 0.2, "serie", "C");
JFreeChart chart = ChartFactory.createLineChart("Chart", null, null, dataset, PlotOrientation.VERTICAL, false, true, true);
LineAndShapeRenderer renderer = new LineAndShapeRenderer(true, false);
chart.getCategoryPlot().setRenderer(renderer);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getNumberInstance()));
renderer.setBaseItemLabelsVisible(true);
JFreeChart chartErrorBars = ChartFactory.createLineChart("ErrorBars", null, null, dataset, PlotOrientation.VERTICAL, false, true, true);
StatisticalLineAndShapeRenderer statisticalRenderer = new StatisticalLineAndShapeRenderer(true, false);
chartErrorBars.getCategoryPlot().setRenderer(statisticalRenderer);
statisticalRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getNumberInstance()));
statisticalRenderer.setBaseItemLabelsVisible(true);
int width = 1500;
int height = 400;
try {
FileOutputStream fos = new FileOutputStream(new File("chart.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ChartUtilities.writeChartAsPNG(baos, chart, width, height);
baos.writeTo(fos);
baos.close();
fos.close();
fos = new FileOutputStream(new File("chartErrorBars.png"));
baos = new ByteArrayOutputStream();
ChartUtilities.writeChartAsPNG(baos, chartErrorBars, width, height);
baos.writeTo(fos);
baos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
そして、そのコードによって生成された2つの画像。
あなたの現在のアプローチを示している[MCVE]が含まれるようにあなたの質問を編集してください。 – trashgod
@trashgod私は例を追加しました。他に何か追加すればいいですか? – Julian
私は以下のアプローチを提案しました。 – trashgod