(2)JfreeChart之柱状图与折线图复合图

在(1)中已经介绍了Jfreechart的柱状图的创建,那么在工作中会遇到柱状图与折线图结合组成复合图,所以在柱状图的基础上添加折线图,这里给大家介绍下添加折线图,(不明白柱状图的请看上一篇)。

1、首先是效果图
这里写图片描述

2、代码实现
在这里需要注意的是:数据库创建两个一个是柱状图的一个是折线图的
柱状图的代码请看(1)Jfreechart之柱状图
在柱状图的基础上通过categoryplot.setDataset(1, createLineDataset());添加折线图的数据集合
通过 LineAndShapeRenderer 设置折线的样式以及显示前后顺序
LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
//设置折线的颜色
lineandshaperenderer.setSeriesPaint(0, Color.decode(“#9BBB59”));

    lineandshaperenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    categoryplot.setRenderer(1, lineandshaperenderer);
    categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);// 折线在柱面前面显示

最后会生成最终效果。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JFreeChart是一个Java类库,用于创建各种类型的表,包括折线图柱状图,饼等等。在JFreeChart中,创建动态折线图可以通过以下步骤完成: 1. 导入JFreeChart类库。 2. 创建一个XYSeries对象,用于存储折线图的数据。 3. 创建一个XYSeriesCollection对象,用于管理XYSeries对象并将其添加到折线图中。 4. 创建一个ChartPanel对象,用于显示折线图。 5. 创建一个JFreeChart对象,用于设置折线图的标题、坐标轴等属性。 6. 使用ScheduledExecutorService定时更新折线图的数据。 下面是一个示例代码,演示如何创建一个简单的动态折线图: ``` import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.util.Random; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Millisecond; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; public class DynamicLineChart extends JFrame { private static final long serialVersionUID = 1L; private TimeSeries series; private ScheduledExecutorService executor; public DynamicLineChart() { super("Dynamic Line Chart"); setDefaultCloseOperation(EXIT_ON_CLOSE); // create dataset TimeSeriesCollection dataset = new TimeSeriesCollection(); series = new TimeSeries("Random Data"); dataset.addSeries(series); // create chart JFreeChart chart = ChartFactory.createTimeSeriesChart( "Dynamic Line Chart", "Time", "Value", dataset, true, true, false ); // customize chart XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.WHITE); plot.setDomainGridlinePaint(Color.BLACK); plot.setRangeGridlinePaint(Color.BLACK); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setAutoRange(true); // create chart panel ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(640, 480)); add(chartPanel, BorderLayout.CENTER); // create executor to update chart data executor = Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(this::updateData, 0, 50, TimeUnit.MILLISECONDS); } private void updateData() { double value = Math.random() * 100; series.add(new Millisecond(), value); } public static void main(String[] args) { DynamicLineChart chart = new DynamicLineChart(); chart.pack(); chart.setVisible(true); } } ``` 在上面的代码中,我们创建了一个继承自JFrame的DynamicLineChart类,并在其构造函数中完成了以下操作: 1. 创建一个TimeSeries对象,用于存储折线图的数据。 2. 创建一个TimeSeriesCollection对象,用于管理TimeSeries对象并将其添加到折线图中。 3. 创建一个JFreeChart对象,用于设置折线图的标题、坐标轴等属性。 4. 创建一个ChartPanel对象,用于显示折线图。 5. 使用ScheduledExecutorService定时更新折线图的数据。 在updateData()方法中,我们生成随机数据并将其添加到TimeSeries对象中。通过ScheduledExecutorService定时调用updateData()方法,我们可以实现动态更新折线图的效果。 最后,在main()方法中,我们创建一个DynamicLineChart对象,并设置其可见性。运行程序后,我们可以看到生成的动态折线图

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值