Java 从JFreeChart获取多个数据集
我使用JFreeChart在同一个图形上有两个数据集。我试图比较图表上的点的相似程度,因此我需要访问我之前放入图表中的两个数据集,但由于某种原因,我似乎无法提取这些信息 以下是数据的输入方式:Java 从JFreeChart获取多个数据集,java,jfreechart,Java,Jfreechart,我使用JFreeChart在同一个图形上有两个数据集。我试图比较图表上的点的相似程度,因此我需要访问我之前放入图表中的两个数据集,但由于某种原因,我似乎无法提取这些信息 以下是数据的输入方式: private static IntervalXYDataset createDataset() { DefaultXYDataset completeDataset = new DefaultXYDataset(); //populate with simulated data
private static IntervalXYDataset createDataset()
{
DefaultXYDataset completeDataset = new DefaultXYDataset();
//populate with simulated data
double[][] sim = new double[2][simData.size()];
for(int i = 0; i < simData.size(); i++){
sim[0][i] = simData.get(i).getOne();
sim[1][i] = simData.get(i).getTwo();
}
//populated with known experimental data
double[][] exp = new double[2][expData.size()];
for(int i = 0; i < expData.size(); i++){
exp[0][i] = expData.get(i).getOne();
exp[1][i] = expData.get(i).getTwo();
}
completeDataset.addSeries("Simulated", sim);
completeDataset.addSeries("Experimental", exp);
XYBarDataset dataset = new XYBarDataset(completeDataset, .1);
return dataset;
}
private static IntervalXYDataset createDataset()
{
DefaultXYDataset completeDataset=新的DefaultXYDataset();
//用模拟数据填充
double[]sim=新的double[2][simData.size();
对于(int i=0;i
数据最初是成对存储的,但我知道数据是输入的,因为图形正确地显示了数据。如何返回此数据集中的两个系列?如果我理解正确,您希望从CompletedDataset中检索两个数据集 由于DefaultXYDataset有一些限制,您可以尝试这样的解决方法。我还没有测试它,所以可能需要一些调整:)
completeDataset.addSeries(“模拟”,sim)//“模拟”将位于位置0
addSeries(“实验”,exp)//“实验性”将位于位置1
//获取序列长度
int countSeries1=completeDataset.getItemCount(0)//模拟中的项目数
int countSeries2=completeDataset.getItemCount(1)//实验项目数
double[]series1=新的double[2][countSeries1];
double[]series2=新的double[2][countSeries2];
//重新创建模拟系列
对于(int i=0;i
这是否回答了您的问题?出于某种原因,completeDataset似乎没有函数getSeries()。我已编辑了我的答案。希望这有助于检索您的数据集。如果没有,那么值得一看存储和检索序列的XYSeriesCollection。我支持Frank d的最后一条评论…使用XYSeries/XYSeriesCollection将使代码更加直观。
completeDataset .addSeries("Simulated", sim); //"Simulated" will be at position 0
completeDataset .addSeries("Experimental", exp); //"Experimental" will be at position 1
//get series length
int countSeries1 = completeDataset.getItemCount(0); //number of items in Simulated
int countSeries2 = completeDataset.getItemCount(1); //number of items in Experimental
double[][] series1 = new double[2][countSeries1];
double[][] series2 = new double[2][countSeries2];
//recreate Simulated series
for(int i = 0; i < countSeries1; i++){
series1[0][i] = completeDataset.getXValue(0, i);
series1[1][i] = completeDataset.getYValue(0, i);
}
//recreate Experimental series
for(int i = 0; i < countSeries2; i++){
series2[0][i] = completeDataset.getXValue(1, i);
series2[1][i] = completeDataset.getYValue(1, i);
}