背景

项目应用中整理纪要,用于参数说明。后抽部分简码以用例,特此纪要!

问题

Java Swing中JFreeChart如何构建双纵轴(双Y轴)图表

说明

JFreeChart是一个工厂类,是Swing中主要图表构建入口。

样例Demo

下面是应用Demo的样例代码,可以直接运行参考:

package com.company.swing.jfreechart.barChart;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.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DatasetGroup;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;import java.awt.*;public class DoubleBarChar3 extends ApplicationFrame {public static void main(String[] args) {DoubleBarChar3 bar = new DoubleBarChar3("Bar Chart Demo");bar.pack();RefineryUtilities.centerFrameOnScreen(bar);bar.setVisible(true);}public DoubleBarChar3(String title) {super(title);setContentPane(new ChartPanel(createChart()));this.setPreferredSize(new Dimension(800, 600));}private JFreeChart createChart() {// 初始化一个基础渲染规则为3D模式的柱状统计图效果的Chart图表。JFreeChart chart = ChartFactory.createStackedBarChart("DoubleBarChart", "Category", "Value", null, PlotOrientation.VERTICAL, true, true, false);{// 获取绘图区对象CategoryPlot plot = (CategoryPlot) chart.getPlot();// 设置轴1--数据匹配NumberAxis axis0 = new NumberAxis("第一条轴线");plot.setRangeAxis(0, axis0);plot.setDataset(0, createBarDataset());plot.mapDatasetToRangeAxis(0, 0);// 重新生成一个图表渲染的对象(折线图渲染对象)。LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();{// 显示折点数据。lineandshaperenderer.setBaseItemLabelsVisible(true);lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());{// 设置拐点是否可见/是否显示拐点lineandshaperenderer.setBaseShapesVisible(true);// 设置线条是否被显示填充颜色lineandshaperenderer.setUseFillPaint(true);{// 设置第一条折线的拐点颜色lineandshaperenderer.setSeriesFillPaint(0, Color.BLUE);// 设置第二条折线的拐点颜色lineandshaperenderer.setSeriesFillPaint(1, Color.RED);}{//设置折线颜色(第一条折线数据线)lineandshaperenderer.setSeriesPaint(0, new Color(91, 155, 213));//设置折线颜色(第二条折折线据线)lineandshaperenderer.setSeriesPaint(1, Color.RED);}{// 设置第一条折线的广度(粗细度)lineandshaperenderer.setSeriesStroke(0, new BasicStroke(1.8F));// 设置第二条折线的广度(粗细度)lineandshaperenderer.setSeriesStroke(1, new BasicStroke(1.8F));}{//设置拐点数值颜色,默认黑色lineandshaperenderer.setBaseItemLabelsVisible(true); // 默认就是true,这里可以不用刻意声明。lineandshaperenderer.setBaseItemLabelPaint(Color.BLUE);}{// 解决最高柱体或折点提示内容被遮盖的问题。lineandshaperenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));lineandshaperenderer.setItemLabelAnchorOffset(2); // 设置柱形图上的文字偏离值}}}// 重构第二个数据对象的渲染方式,由现在默认的Bar(柱状统计图)重构为刚刚初始化的Line(折线统计图)的渲染模式plot.setRenderer(1, lineandshaperenderer);// 设置轴2--数据匹配NumberAxis axis1 = new NumberAxis("第二条轴线");plot.setRangeAxis(1, axis1);plot.setDataset(1, createLineDataset());plot.mapDatasetToRangeAxis(1, 1);plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);/** ---------------------- 中文乱码问题处理 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 ------------------------------- */{rangeAxis.setAutoRange(true);}}// 设置图表控件的背景颜色。chart.setBackgroundPaint(Color.WHITE);return chart;}private DefaultCategoryDataset createBarDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();String legend = "默认不良项";String legend1 = "不良项1";String legend2 = "不良项2";String legend3 = "不良项3";String time = "2021-08-10";String time1 = "2021-08-11";String time2 = "2021-08-12";String time3 = "2021-08-13";DatasetGroup datasetGroup = new DatasetGroup(time);dataset.setGroup(datasetGroup);dataset.setValue(60, legend, time);dataset.setValue(30, legend1, time1);dataset.setValue(20, legend2, time2);dataset.setValue(50, legend3, time3);return dataset;}private DefaultCategoryDataset createLineDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();String legend = "机台0的良率";String legend1 = "机台1的良率";String legend2 = "机台2的良率";String legend3 = "机台3的良率";String time = "2021-08-10";String time1 = "2021-08-11";String time2 = "2021-08-12";String time3 = "2021-08-13";// group data leged. params(y, legend, x)dataset.setValue(100, legend, time);dataset.setValue(160, legend, time1);dataset.setValue(220, legend, time2);dataset.setValue(500, legend, time3);// group data leged1.dataset.setValue(1000, legend1, time);dataset.setValue(1600, legend1, time1);dataset.setValue(2200, legend1, time2);dataset.setValue(5000, legend1, time3);//        // group data leged2.
//        dataset.setValue(1680, legend2, time);
//        dataset.setValue(2280, legend2, time1);
//        dataset.setValue(2880, legend2, time2);
//        dataset.setValue(5880, legend2, time3);
//
//        // group data leged3.
//        dataset.setValue(3020, legend3, time);
//        dataset.setValue(3620, legend3, time1);
//        dataset.setValue(5220, legend3, time2);
//        dataset.setValue(8020, legend3, time3);return dataset;}
}

效果图

Java Swing中JFreeChart构建双纵轴(双Y轴)图表的使用纪要相关推荐

  1. Java Swing中JFreeChart构建柱状图(非3D)时关于取消柱体的高亮问题的解决纪要?

    背景 项目应用中后期的用例Demo,特此纪要! 问题 Java Swing中JFreeChart构建的柱状图(非3D)如何取消柱体的高亮显示? 说明 此Demo中点题的代码就一行,其余的代码段在其他的 ...

  2. JNoteHelper 给你的java swing或桌面程序提供一双翅膀

    JNoteHelper 使用swing构建的java程序, 主要基于miglayout,swingx,flatlatf. 开发得初衷,只是打算作为个人笔记的助手, 因为基于java swing开发, ...

  3. swingworker_使用SwingWorker的Java Swing中的多线程

    swingworker 如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些程序. 没有什么可以阻止您在Swing中使用标准的 ...

  4. 使用SwingWorker的Java Swing中的多线程

    如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些东西. 没有什么可以阻止您在Swing中使用标准的多线程技术,并且需要遵循 ...

  5. Java Swing中的聊天气泡

    本文将向您解释"如何在Java swing应用程序中绘制聊天气泡?" 聊天气泡与呼出气泡或思想气泡相同. 今天,大多数聊天应用程序都以这种格式显示转换,因此本文将帮助您在用Java ...

  6. java swing 注册事件_比较Java Swing中三种注册事件的方法

    Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...

  7. Java Swing中键盘事件的处理

    在Java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等.这里就介绍如何定义键盘事件,以及如何处理这些事件. 在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同 ...

  8. JAVA Swing 中的表格

    今天我们来学习一下java swing中的表格怎么来使用 在用swing技术开发系统的时候, 有时候会需要用到表格,那么我们来看看表格是怎么使用的 public class Table1 extend ...

  9. java jbutton边框颜色_在Java Swing中更改JButton的边框颜色,以保留插图

    我想更改Java Swing中JButton组件的边框颜色. 我尝试了以下方法: package com.example.test; import java.awt.Color; import jav ...

最新文章

  1. 苹果手机在火车站被偷的状况下如何定位找回
  2. Android使用磁盘缓存DiskLruCache
  3. android 成长日记 5.关于progress控件和Alertdialog和layout学习
  4. 【技术综述】图像与CNN发家简史,集齐深度学习三巨头
  5. matlab涡轮机建模,数学实验大作业---数学曲面
  6. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
  7. 使用jMeter构造大量并发的随机HTTP请求
  8. 封装的ExtGrid 实现增、删、改、查等功能
  9. uni app input添加获取验证码按钮_uni-app跨平台框架对微信小程序的无障碍支持探索...
  10. UltraISO制作linux启动盘(包含写入不完整解决方法)
  11. tcp测试监听工具_linux 下两款网络性能测试工具介绍
  12. 题目399-整除个数(满满的套路)
  13. Java Jad 反编译class文件
  14. python牛顿迭代公式_牛顿迭代法Python实现
  15. MapGIS名词解释
  16. 会员积分商城系统的功能介绍
  17. python处理grd格式文件_python json pickle 模块
  18. android 正则句子按照标点符号断句,正则Pattern;
  19. javamail写邮件/邮箱验证报错javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
  20. Flowable Exclusive gateway has no outgoing sequence flow

热门文章

  1. 盘点百位富豪读过的大学:土鳖比海龟更有优势
  2. unity3d发布webgl手机测试流程
  3. 阿里云CentOS镜像下载地址
  4. 单片机硬件电路设计实例分析
  5. 测试管理之--文档管理
  6. pyqt5中利用搜索框和按钮,搜索表中内容
  7. matlab实现无人机自组网,无人机自组网技术.pdf
  8. Missing parentheses in call to 'print'——python语法错误
  9. Cocos2D-X Tutorial for iOS and Android: Getting Started
  10. codeforces 1635E-Cars (二分图染色+拓扑排序)