JavaSwing中JFreeChart构建双纵轴(双Y轴)图表的使用纪要

JavaSwing中JFreeChart构建双纵轴(双Y轴)图表的使⽤纪
背景
项⽬应⽤中整理纪要,⽤于参数说明。后抽部分简码以⽤例,特此纪要!
问题
Java Swing中JFreeChart如何构建双纵轴(双Y轴)图表
说明
JFreeChart是⼀个⼯⼚类,是Swing中主要图表构建⼊⼝。
样例Demo
下⾯是应⽤Demo的样例代码,可以直接运⾏参考:
package 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.derer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.al.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();
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 = ateStackedBarChart("DoubleBarChart", "Category", "Value", null, PlotOrientation.VERTICAL, true, true, false);
{
// 获取绘图区对象
CategoryPlot plot = (CategoryPlot) Plot();
// 设置轴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_CENT                        lineandshaperenderer.setItemLabelAnchorOffset(2); // 设置柱形图上的⽂字偏离值
}
}
}
// 重构第⼆个数据对象的渲染⽅式,由现在默认的Bar(柱状统计图)重构为刚刚初始化的Line(折线统计图)的渲染模式
plot.setRenderer(1, lineandshaperenderer);
// 设置轴2--数据匹配
/
/ 设置轴2--数据匹配
NumberAxis axis1 = new NumberAxis("第⼆条轴线");
plot.setRangeAxis(1, axis1);
plot.setDataset(1, createLineDataset());
plot.mapDatasetToRangeAxis(1, 1);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
/** ---------------------- 中⽂乱码问题处理 Start ------------------------------- */
CategoryAxis domainAxis = DomainAxis();    //⽔平底部列表
domainAxis.setLabelFont(new Font("⿊体", Font.BOLD, 14));    //⽔平底部标题            domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); //垂直标题
ValueAxis rangeAxis = RangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("⿊体", Font.BOLD, 15));
/** ---------------------- 中⽂乱码问题处理 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(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); //
logo语言//        // 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;
}
}
效果图

本文发布于:2024-09-22 19:41:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/596850.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   渲染   折线   对象   是否
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议