java – 使用JfreeChart动态地向XYSeries添加点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用JfreeChart动态地向XYSeries添加点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4284字,纯文字阅读大概需要7分钟。
内容图文
![java – 使用JfreeChart动态地向XYSeries添加点](/upload/InfoBanner/zyjiaocheng/808/cd5184b94a3a491a81c755bbfaf9544f.jpg)
我在向XYSeries添加点时遇到问题.我有两节课.一个是Sample(它有一个main方法),另一个是JfreeChart(它有JfreeChart代码).在我的Sample类中,我有一个2D数组样本[row] [2],最初有10行,然后我需要调用JfreeChart类并将它们添加到XYSeries并显示散点图.我设法做到了这一点,但下次我调用Jfreechart类时,我的Array有25行.
我需要将值添加到XYSeries并在散点图上绘制它们,散点图应显示前面10行的不同颜色值,现在25行值不同颜色……这样就可以了.谁能提出一些建议或例子?
class Sample {
public static void main(String args[]) {
System.out.print("(X,Y) Paired Values");
double[][] sample = new double[row][2];
for (int g = 0; g < sampe.length; g++) {
for (int h = 0; h < 2; h++) {
System.out.print("" + sample[g][h] + ",");
}
}
JfreeChart sample = new JfreeChart("Demo", sample);
}
static XYDataset samplexydataset2(double[][] sample) {
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
XYSeries series = new XYSeries("DataSet");
for (int x = 0; x < sample.length; x++) {
series.add(sample[x][0], sample[x][1]);
}
xySeriesCollection.addSeries(series);
return xySeriesCollection;
}
}
1)当我打电话给“第一次”JfreeChart Class时,我将在我的Sample Array中使用这些Pairs
(0.78,0.80)
(0.21,0.19)
(0.181,0.187)
2)当我第二次调用JfreeChart类时,我将在我的样本数组中使用不同的值
(0.20,0.19)
(0.8,0.79)
(0.41,0.45)
(0.77,0.79)
(0.54,0.65)
这几次(10次)所以我需要将它添加到“XYSeries”和“XYSeriesCollection”并在我第二次调用JFreeChart类时显示“第一次”值和“第二次”值
解决方法:
您可以使用一个可用的add()方法向XYSeries添加新值,如此example所示.如果您正在获取偶然行,则需要发布sscce.
附录:仔细观察你的例子(最近更新的)genesis,一些混乱是可以理解的:根本不需要数组.下面的示例包含一个按钮,可以将新样本添加到第二个系列.
Can I change the Color of Points when I click the “Add” Button?
每个新系列都是一种新颜色,如example所示.要更改单个颜色,建议的方法是覆盖渲染器的getItemPaint()方法,如here所示.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.*;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
/**
* @see https://stackoverflow.com/questions/7205742
* @see https://stackoverflow.com/questions/7208657
* @see https://stackoverflow.com/questions/7071057
*/
public class ScatterAdd extends JFrame {
private static final int N = 8;
private static final String title = "Scatter Add Demo";
private static final Random rand = new Random();
private XYSeries added = new XYSeries("Added");
public ScatterAdd(String s) {
super(s);
final ChartPanel chartPanel = createDemoPanel();
this.add(chartPanel, BorderLayout.CENTER);
JPanel control = new JPanel();
control.add(new JButton(new AbstractAction("Add") {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < N; i++) {
added.add(rand.nextGaussian(), rand.nextGaussian());
}
}
}));
this.add(control, BorderLayout.SOUTH);
}
private ChartPanel createDemoPanel() {
JFreeChart jfreechart = ChartFactory.createScatterPlot(
title, "X", "Y", createSampleData(),
PlotOrientation.VERTICAL, true, true, false);
XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
xyPlot.setDomainCrosshairVisible(true);
xyPlot.setRangeCrosshairVisible(true);
XYItemRenderer renderer = xyPlot.getRenderer();
renderer.setSeriesPaint(0, Color.blue);
NumberAxis domain = (NumberAxis) xyPlot.getDomainAxis();
domain.setVerticalTickLabels(true);
return new ChartPanel(jfreechart);
}
private XYDataset createSampleData() {
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
XYSeries series = new XYSeries("Random");
for (int i = 0; i < N * N; i++) {
double x = rand.nextGaussian();
double y = rand.nextGaussian();
series.add(x, y);
}
xySeriesCollection.addSeries(series);
xySeriesCollection.addSeries(added);
return xySeriesCollection;
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ScatterAdd demo = new ScatterAdd(title);
demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demo.pack();
demo.setLocationRelativeTo(null);
demo.setVisible(true);
}
});
}
}
内容总结
以上是互联网集市为您收集整理的java – 使用JfreeChart动态地向XYSeries添加点全部内容,希望文章能够帮你解决java – 使用JfreeChart动态地向XYSeries添加点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。