JFreeChart 生成双Y轴折线图

不解释,直接上代码

public class demo_zhe {
    public static void main(String[] args) {
        // 创建数据集
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "数量", "PE");
        dataset.addValue(200, "长度和", "PE");
        dataset.addValue(30, "数量", "STEEL");
        dataset.addValue(400, "长度和", "STEEL");
        dataset.addValue(50, "数量", "CUTTER");
        dataset.addValue(350, "长度和", "CUTTER");
        dataset.addValue(70, "数量", "NYLON");
        dataset.addValue(800, "长度和", "NYLON");
        dataset.addValue(55, "数量", "COPPER");
        dataset.addValue(1000, "长度和", "COPPER");

        // 创建图表
        JFreeChart chart = ChartFactory.createLineChart(
                "低压燃气管道", // 图表标题
                "材质", // 横轴标签
                "", // 纵轴标签,在后面创建纵轴标签
                dataset // 数据集

        );

        // 设置背景颜色
        chart.setBackgroundPaint(Color.white);

        // 获取绘图区域对象
        CategoryPlot plot = (CategoryPlot) chart.getPlot();


        // 设置Y1轴
        NumberAxis axis1 = (NumberAxis) plot.getRangeAxis();
        axis1.setAutoRangeIncludesZero(false);
        axis1.setLabel("数量");

        // 创建第二个Y轴,使用和第一个Y轴相同的X轴
        NumberAxis axis2 = new NumberAxis("长度和");
        axis2.setAutoRangeIncludesZero(false);

        // 将第二个Y轴添加到图表中
        plot.setRangeAxis(1, axis2);
        plot.setDataset(1, dataset);
        plot.mapDatasetToRangeAxis(1, 1);

        // 设置第二个系列的绘制器和颜色
        CategoryItemRenderer renderer2 = plot.getRenderer();
        renderer2.setSeriesPaint(1, java.awt.Color.BLUE);

        //在折点新鲜事数值
        renderer2.setDefaultItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer2.setDefaultItemLabelsVisible(true);
        renderer2.setDefaultPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
        renderer2.setDefaultItemLabelFont(new Font("宋体", Font.PLAIN, 20));

        /** ---------------------- 中文乱码问题处理 Start ------------------------------- */
        CategoryAxis domainAxis = plot.getDomainAxis();     //水平底部列表
        domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 14));     //水平底部标题
        domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); //垂直标题

        ValueAxis rangeAxis = plot.getRangeAxis();//获取柱状
        rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
        chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
        chart.getTitle().setFont(new Font("宋体", Font.BOLD, 20));//设置标题字体
        /** ---------------------- 中文乱码问题处理 End ------------------------------- */

        // 创建图表窗口并显示图表
        ChartPanel chartPanel = new ChartPanel(chart);
        //测试用,导入程序,可将此段删除
        JFrame frame = new JFrame("Dual Axis Bar Chart");
        frame.setContentPane(chartPanel);
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值