public static void createLineChart(double[] data) { XYSeries series = new XYSeries("Data"); for (int i = 0; i < data.length; i++) { series.add(i+1, data[i]/10000); } XYSeriesCollection dataset = new XYSeriesCollection(series); JFreeChart chart = ChartFactory.createXYLineChart( "Best Time vs. Generation", "Generation", "Best Time", dataset, PlotOrientation.VERTICAL, true, true, false ); chart.setBackgroundPaint(Color.WHITE); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.white); plot.setDomainGridlinePaint(Color.lightGray); plot.setRangeGridlinePaint(Color.lightGray); NumberAxis xAxis = (NumberAxis) plot.getDomainAxis(); xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); xAxis.setTickUnit(new NumberTickUnit(100)); xAxis.setTickMarkInsideLength(5.0f); xAxis.setTickMarkOutsideLength(0.0f); NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); yAxis.setTickUnit(new NumberTickUnit(0.01)); yAxis.setTickMarkInsideLength(5.0f); yAxis.setTickMarkOutsideLength(0.0f); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); renderer.setSeriesPaint(0, Color.black); renderer.setSeriesStroke(0, new BasicStroke(1.0f)); plot.setRenderer(renderer); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(500, 500)); JFrame frame = new JFrame("Plot"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(chartPanel); frame.pack(); frame.setVisible(true); } 如何将纵轴变成可以自适应数据大小的
时间: 2024-01-17 20:05:43 浏览: 36
要将纵轴自适应数据大小,可以使用以下代码:
```
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setAutoRange(true);
```
这里将 `yAxis` 强制转换为 `NumberAxis` 类型,然后调用 `setAutoRange(true)` 方法,表示让纵轴自适应数据大小。
相关问题
使用JFreeChart-创建折线图的小结(之CreateLineChart)
JFreeChart是一款开源的Java图表库,它可以创建各种类型的图表,包括折线图、柱状图、饼图等等。下面是使用JFreeChart创建折线图的小结,包括CreateLineChart方法的使用。
1. 导入依赖
```
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.0</version>
</dependency>
```
2. 创建数据集
```
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series 1", "Category 1");
dataset.addValue(2.0, "Series 1", "Category 2");
dataset.addValue(3.0, "Series 1", "Category 3");
dataset.addValue(4.0, "Series 1", "Category 4");
```
3. 创建图表对象
```
JFreeChart chart = ChartFactory.createLineChart(
"Line Chart Demo", // 图表标题
"Category", // X轴标签
"Value", // Y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否显示提示信息
false // 是否生成URL链接
);
```
4. 设置图表样式
```
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.white);
```
5. 显示图表
```
ChartFrame frame = new ChartFrame("Line Chart", chart);
frame.pack();
frame.setVisible(true);
```
以上就是使用JFreeChart创建折线图的基本步骤,其中CreateLineChart方法是用来创建折线图的。你可以根据自己的需求对图表进行更多的定制化设置。
JFreeChart 的 createLineChart 添加ValueMarker标注,且ValueMarker标注的label显示在中间,代码怎么写
您可以使用以下代码实现该功能:
```java
CategoryPlot plot = (CategoryPlot) chart.getPlot();
ValueMarker marker = new ValueMarker(valueToMark); // valueToMark是您要标记的值
marker.setLabelOffset(new RectangleInsets(15.0, 0, 0, 0)); // 调整标注位置
marker.setLabel(String.valueOf(marker.getValue())); // 设置标注内容
marker.setLabelAnchor(RectangleAnchor.TOP); // 设置标注位置
marker.setLabelTextAnchor(TextAnchor.TOP_CENTER); // 设置标注文本位置
plot.addRangeMarker(marker);
```