gpt4 book ai didi

java - 绘制多个函数时如何消除一组重复的 X 值?

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:00 25 4
gpt4 key购买 nike

我是 jfreechart 新手。我有类似 http://www.java2s.com/Code/Java/Chart/JFreeChartXYLogAxesDemo.htm 的代码在图表中绘制 4 个函数。

但是,每个 xyseries 的 x 值都是相同的。这似乎是多余的。

有没有办法消除这些重复数据?

我更愿意生成一个 x 系列和多个 y 系列,然后将它们添加到某种系列集合中。

编辑:实现答案非常简单(请参见下文)。

但不确定如何使用 getSeriesKey() ?

import java.util.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.AbstractXYDataset;
import org.jfree.ui.ApplicationFrame;
@SuppressWarnings("serial") class XYDatasetWithCommonX extends AbstractXYDataset {
@SuppressWarnings("unchecked") XYDatasetWithCommonX(int n) {
this.n=n;
y=new ArrayList[n];
for(int i=0;i<n;i++)
y[i]=new ArrayList<Number>();
}
public void add(double x,double[] y) {
this.x.add(x);
for(int i=0;i<n;i++)
this.y[i].add(y[i]);
}
@Override public int getSeriesCount() {
return n;
}
@Override public Comparable getSeriesKey(int series) {
return "Unit";
}
@Override public int getItemCount(int series) {
return y[series].size();
}
@Override public Number getX(int series,int item) {
return x.get(item);
}
@Override public Number getY(int series,int item) {
return y[series].get(item);
}
final int n;
final List<Number> x=new ArrayList<Number>();
final List<Number>[] y;
}
@SuppressWarnings("serial") public class Main extends ApplicationFrame {
Main() {
super("demo");
}
public static void main(String[] args) {
XYDatasetWithCommonX x=new XYDatasetWithCommonX(3);
double[] y=new double[3];
for(int i=1;i<=50;i++) {
y[0]=10*Math.exp(i/5.0);
y[1]=20*Math.exp(i/5.0);
y[2]=30*Math.exp(i/5.0);
x.add(i,y);
}
Main main=new Main();
final JFreeChart chart=ChartFactory.createXYLineChart("my demo","x","y",x,PlotOrientation.VERTICAL,true,true,false);
final ChartPanel chartPanel=new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500,270));
main.setContentPane(chartPanel);
main.pack();
main.setVisible(true);
}
}

最佳答案

This seems redundant.

是的,选择的实现 XYDataset , XYSeriesCollection ,只是众多具体实现之一。对于大量相同的域值,请考虑自定义 XYDataset包含一个 List<Number>所有系列共享的域值。该方法如图所示here对于单个系列。

关于java - 绘制多个函数时如何消除一组重复的 X 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com