JFreeChart 画折线图,并在折线图上设置对应的数值

  


 JFreeChart 版本:

<dependency>
   <groupId>org.jfree</groupId>
   <artifactId>jfreechart</artifactId>
   <version>1.5.4</version>
</dependency>
package com.cqrd.perftiger.thread.launchTime;
import java.awt.Color;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;

public class JFreeChartLineChart {
    
    public static void main(String[] args) {

        // 创建数据集
        CategoryDataset dataset = createDataset();

        // 创建图表
        JFreeChart chart = createChart(dataset);

        ChartPanel chartPanel = new ChartPanel(chart);
        JFrame frame=new JFrame();
        frame.setSize(500,500);
        frame.add(chartPanel);
        frame.setVisible(true);
    }

    // 创建数据集
    private static CategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(100, "Series 1", "Category 1");
        dataset.addValue(200, "Series 1", "Category 2");
        dataset.addValue(150, "Series 1", "Category 3");
        dataset.addValue(170, "Series 1", "Category 4");
        dataset.addValue(210, "Series 1", "Category 5");
        return dataset;
    }

    // 创建图表
    private static JFreeChart createChart(CategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createLineChart(
                "折线图",           // 图表标题
                "横轴",           // 横轴标签
                "纵轴",           // 纵轴标签
                dataset,           // 数据集
                PlotOrientation.VERTICAL,  // 图表方向
                true,              // 是否显示图例
                true,              // 是否生成工具
                false              // 是否生成 URL 链接
        );

        // 定制图表样式
        CategoryPlot plot = chart.getCategoryPlot();
        plot.setBackgroundPaint(Color.white);
        plot.setRangeGridlinePaint(Color.gray);

        CategoryAxis categoryAxis = plot.getDomainAxis();
        categoryAxis.setLowerMargin(0.01);
        categoryAxis.setUpperMargin(0.01);

        NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
        numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer();
        renderer.setDefaultShapesVisible(true);

        renderer.setDefaultShapesFilled(true);
        renderer.setDrawOutlines(true);
        renderer.setUseFillPaint(true);
        renderer.setDefaultFillPaint(Color.white);
        renderer.setDefaultItemLabelGenerator(new CustomLabelGenerator());
        renderer.setDefaultItemLabelsVisible(true);

        chart.setBackgroundPaint(Color.white);
        chart.setBorderPaint(Color.white);
        return chart;
    }
}

class CustomLabelGenerator implements CategoryItemLabelGenerator {

    @Override
    public String generateRowLabel(CategoryDataset categoryDataset, int i) {
        return null;
    }

    @Override
    public String generateColumnLabel(CategoryDataset categoryDataset, int i) {
        return null;
    }

    @Override
    public String generateLabel(CategoryDataset categoryDataset, int i, int i1) {
        Number value = categoryDataset.getValue(i, i1);
        return value.toString();
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用jfreechart设置固定折线图虚线的示例代码: ```java // 创建数据集 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Series 1", "Category 1"); dataset.addValue(200, "Series 1", "Category 2"); dataset.addValue(150, "Series 1", "Category 3"); dataset.addValue(300, "Series 1", "Category 4"); dataset.addValue(175, "Series 1", "Category 5"); dataset.addValue(250, "Series 1", "Category 6"); dataset.addValue(50, "Series 2", "Category 1"); dataset.addValue(100, "Series 2", "Category 2"); dataset.addValue(75, "Series 2", "Category 3"); dataset.addValue(150, "Series 2", "Category 4"); dataset.addValue(87, "Series 2", "Category 5"); dataset.addValue(125, "Series 2", "Category 6"); // 创建图表 JFreeChart chart = ChartFactory.createLineChart( "Multiple Line Chart", // 图表标题 "Category", // x轴标签 "Value", // y轴标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向 true, // 是否显示图例 true, // 是否显示提示 false // 是否生成URL链接 ); // 设置虚线 Stroke dashed = new BasicStroke( 2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, new float[] {6.0f, 6.0f}, 0.0f); CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.getRenderer().setSeriesStroke(1, dashed); // 显示图表 ChartFrame frame = new ChartFrame("Multiple Line Chart", chart); frame.pack(); frame.setVisible(true); ``` 在上述代码中,我们使用了BasicStroke类创建了一个虚线,然后将其应用于第二个系列的折线。具体来说,我们使用了setSeriesStroke()方法将虚线应用于第二个系列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值