当前位置: 首页 > 面试题库 >

JFreeChart更改现有条形图中的数据

唐哲
2023-03-14
问题内容

我想循环更改条形图数据,但我不知道该怎么做。我的代码:

DefaultCategoryDataset barChartData = new DefaultCategoryDataset();
        barChartData.setValue(0,  "Values","1");
        barChartData.setValue(0,  "Values","2");
        barChartData.setValue(0,  "Values","3");


        JFreeChart barChart = ChartFactory.createBarChart("Proxi", "Sensors", "Value", barChartData, PlotOrientation.VERTICAL, false, true, false);

        CategoryPlot barchrt = barChart.getCategoryPlot();

        barchrt.setRangeGridlinePaint(Color.ORANGE);

        ChartPanel barPanel = new ChartPanel(barChart);
        barPanel.setBounds(0, 0, 731, 456);
        contentPane.add(barPanel);

问题答案:

更新 模型 ,随后将显示侦听 视图
。动画更新,而不会阻塞事件调度线程,使用javax.swing.Timer; stop()根据需要调用。

图片

经测试:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 * @see https://stackoverflow.com/a/21267585/230513
 */
public class Test {

    private static final String ROW_KEY = "Values";
    private static final Random r = new Random();

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final DefaultCategoryDataset model = new DefaultCategoryDataset();
        model.setValue(1, ROW_KEY, "1");
        model.setValue(2, ROW_KEY, "2");
        model.setValue(3, ROW_KEY, "3");
        JFreeChart chart = ChartFactory.createBarChart("Proxi", "Sensors",
            "Value", model, PlotOrientation.VERTICAL, false, true, false);
        ChartPanel barPanel = new ChartPanel(chart) {

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(320, 240);
            }
        };
        f.add(barPanel);
        f.add(new JButton(new AbstractAction("Update") {

            @Override
            public void actionPerformed(ActionEvent e) {
                model.setValue(r.nextDouble() * 3, ROW_KEY, "2");
            }
        }), BorderLayout.SOUTH);

        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().display();
            }
        });
    }
}


 类似资料:
  • 主要内容:什么是JFreeChart 条形图,JFreeChart 条形图的示例什么是JFreeChart 条形图 条形图是用矩形表示分组数据的图表。条形的高度或长度是代表条形的值的命题。 下图显示了 JFreeChart 库中包含的一些条形图的演示版本: JFreeChart 条形图的示例 让我们以人口数量作为样本数据。 年份 美国(百万) 中国(百万) 印度(百万) 2005年 10 15 20 2010年 15 20 25 2015年 20 25 30 以下代码根据上述

  • 我得到了一个JFrame,在这个框架中有一个JPanel,JPanel中有一个JFreeChart(chart从一个方法中获取数据集),这个图表被添加到JPanel中创建的ChartPanel,然后ChartPanel被添加到JPanel中。此外,我在JPanel中获得了JComboBox,如果我更改了JComboBox中的选项,ActionListener将更新DataSet的值。返回datas

  • 问题内容: 我的Java Web 应用程序的BAR图表中显示了以下值。9.46373791E8 9.45942547E8 9.45559945E8 9.45187023E8 9.44856693E8 9.44417826E8 9.44007878E8 如您所见,这些值实际上很接近,并且有微小的差异。当我 使用Jfreechart生成条形图时,所有条形都显示几乎相同的 高度,并且无法从视觉上分辨出差

  • 问题内容: 我正在尝试创建一个条形图,该条形图从for循环内生成一个数据集。 数据是。现在,当数据经过所有这些操作并生成图形时,仅显示值5的条。值10的分隔条在哪里?有人知道我在做什么错吗?任何帮助表示赞赏。谢谢 编辑:这是条形图的代码: 问题答案: 我猜你在犯一个小错误,那就是。因此,每次将每个项目添加到一个单独的对象中,并使用具有最后一个值的最终实例来创建图表时,这就是在图表中仅获得最后一个值

  • 我已经在网上搜索了足够多的东西,但没有运气。 我已经创建了一个堆叠的3D条形图,其中我无法更改默认颜色。我试了所有提供的建议。 EvenI使用了,但它不起作用。与图表、情节和渲染器中的创作顺序有关吗? 当我打印行和列时,我得到以下信息:

  • 我正在使用gnuplot绘制条形图。 问题是:我希望每个酒吧都有不同的颜色。例如:红色的MSA-GA ACO和蓝色的MSA-GA PACO。 我该怎么做呢? 以下是我使用过的命令: “data.dat”: