如何在折线图中显示系列的值。
我当前的代码
public void renderChart(String variation, OutputStream stream) throws Exception {
boolean rotate = "rotate".equals(variation); // add ?variation=rotate to the URL to rotate the chart
JFreeChart chart = generateChart(rotate);
ChartUtilities.writeChartAsPNG(stream, chart, 750, 400);
}
private JFreeChart generateChart(boolean rotate) {
DefaultCategoryDataset data = ChartData.getDataset();
JFreeChart chart = ChartFactory.createLineChart("example graph", // title
"x-axis", // x-axis label
"y-axis", // y-axis label
data, rotate ? PlotOrientation.HORIZONTAL : PlotOrientation.VERTICAL, true, // legend displayed
true, // tooltips displayed
false); // no URLs*/
CategoryPlot plot = (CategoryPlot) chart.getPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true);
DecimalFormat decimalformat1 = new DecimalFormat("##");
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1));
renderer.setItemLabelsVisible(true);
renderer.setSeriesVisible(true);
return chart;
}
谁能告诉我如何显示此值
为了运行您的代码,我制作了main
方法,并制作了ChartData.getDataset()
方法来创建一些示例数据。您的代码也可以正常工作。所以我想您的问题是您没有我刚才提到的这两种方法。
这里是创建简单测试数据集的方式:
class ChartData {
public static DefaultCategoryDataset getDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1, "Foo", "A");
dataset.addValue(10, "Foo", "B");
dataset.addValue(5, "Foo", "C");
dataset.addValue(2, "Bar", "A");
dataset.addValue(3, "Bar", "B");
dataset.addValue(8, "Bar", "C");
return dataset;
}
}
这是main
方法:
public class JFreeChartSnippet {
//// ////
// Copy your code from your question here //
//// ////
public static void main(String[] args) throws Exception {
new JFreeChartSnippet().renderChart("rotate", new FileOutputStream("foobar.png"));
}
}
现在您应该在文件foobar.png
中看到一些输出:
[enter image description here import java.text.DecimalFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.data.category.DefaultCategoryDataset;
public class GraficaLineaChart {
public static void main(String[] args) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(6, "2019", "Alex");
dataset.setValue(7, "2020", "Alex");
dataset.setValue(8, "2019", "Carmen");
dataset.setValue(5, "2020", "Carmen");
dataset.setValue(12, "2019", "Tony");
dataset.setValue(9, "2020", "Tony");
JFreeChart chart = ChartFactory.createLineChart( "Promedio de calificaciones 2019-2020", "Alumnos", "Calificaciones", dataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true);
DecimalFormat decimalformat1 = new DecimalFormat("##");
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1));
renderer.setItemLabelsVisible(true);
renderer.setSeriesVisible(true);
//Mostramos la grafica en pantalla
ChartFrame frame = new ChartFrame("Ejemplo
Grafica de Lineas", chart);
frame.pack();
frame.setVisible(true);
}
}