- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我的 TimeSeries 图表每 2 秒显示一个位置的温度。
现在,如果我想每 2 秒显示一次降雨指数和温度,我该如何实现?
这是我的代码:
import testWeatherService.TestWeatherTimeLapseService;
public class graph extends JFrame implements ActionListener {
private static TimeSeries series;
static final int COUNT = 200;
/** The Constant WINDOW. */
public static final int WINDOW = 25;
TestWeatherTimeLapseService getLocData = new TestWeatherTimeLapseService();
public graph(final String title) {
super(title);
this.series = new TimeSeries("Random Data", Millisecond.class);
this.series2 = new TimeSeries("Random Data", Millisecond.class);
final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
final JPanel content = new JPanel(new BorderLayout());
add(chartPanel, BorderLayout.SOUTH);
content.add(chartPanel);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 600));
setContentPane(content);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart(
"Graph",
"Time",
"Temperature",
dataset,
true,
true,
false
);
final XYPlot plot = result.getXYPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setAutoRange(true);
axis.setFixedAutoRange(60000); // 60 seconds
axis = plot.getRangeAxis();
axis.setRange(-10.0, 50.0);
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesPaint( 1 , Color.RED );
renderer.setSeriesStroke( 1 , new BasicStroke( 4.0f ) );
plot.setRenderer( renderer );
return result;
}
public void actionPerformed(final ActionEvent e) {
//
}
public void update(){
String currTemperature="";
try {
currTemperature=getLocData.getWeatherData("Laverton")[1]; //get temperature of laverton
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
float number = Float.parseFloat(currTemperature);
number=(float) (number-273.15);
final Millisecond now = new Millisecond();
System.out.println("Now = " + now.toString());
this.series.add(new Millisecond(), number);
}
public void doIt(){
final graph demo = new graph("Graph");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Timer timer;
timer = new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
demo.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) { //stop when user closes chart
demo.dispose();
((Timer)e.getSource()).stop();
}
});
update();
}
});
timer.start();
}
});
}}
最佳答案
如上所述here ,TimeSeriesCollection
可以显示多个系列。只需将两个系列添加到集合中并更新计时器的 ActionListener
中的每个系列即可。在下面的示例中,还会在每个 TimeSeries
上调用 setMaximumItemAge()
,如 here 所示。 ,丢弃旧数据。为了适应不同的单位,您可以在同一个图上设置多个轴,如图 here .
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.*;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.Timer;
import org.jfree.chart.*;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
/** @See https://stackoverflow.com/q/44037591/230513 */
public class ChartPanelTest {
private static final Random R = new Random();
private static final int AGE = 60;
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TimeSeriesCollection dataset = new TimeSeriesCollection();
TimeSeries series1 = new TimeSeries("T1");
series1.setMaximumItemAge(AGE);
dataset.addSeries(series1);
TimeSeries series2 = new TimeSeries("T2");
series2.setMaximumItemAge(AGE);
dataset.addSeries(series2);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Test", "Time", "Value", dataset, false, false, false);
ChartPanel chartPanel = new ChartPanel(chart) {
@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
};
f.add(chartPanel);
Timer timer = new Timer(2000, new ActionListener() {
Second s = new Second();
{ for (int i = 0; i < AGE; i++) actionPerformed(null); }
@Override
public void actionPerformed(ActionEvent e) {
series1.add(s, R.nextGaussian());
series2.add(s, R.nextGaussian());
s = (Second) s.next().next();
}
});
timer.start();
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
});
}
}
关于java - 如何在 JFreeChart TimeSeries 图表上显示降雨指数和温度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037591/
我想使用现有 TimeSerie 的索引和另一个具有不同时间索引的 TimeSerie 的值来创建 DataFrame 或 TimeSerie。时间序列看起来像; DT 2018-01-02
我正在尝试使用 Google 监控 REST API(代码示例)获取性能数据。但它返回空数据“{}”。还观察到它正在重新调整响应的 ContentEncoding 为“gzip”类型。 private
我想从某个小时开始以每天(正好 24 小时)的频率重新采样 TimeSeries。 喜欢: index = date_range(datetime(2012,1,1,17), freq='H', pe
我目前正在使用 Azure 时序见解来聚合我的数据。它为我提供了一种生成日期直方图的方法,我可以在其中指定搜索跨度和存储桶大小。然而,buckets的结果并不符合我的预期。 例如,如果搜索范围是从 2
我目前正在尝试为股票价格烛台做一个简单的实现。假设我们有一只名为 XYZ 的股票。该股票收到一系列价格(没有特定频率),(例如)看起来像:XYZ: [10.2, 10.7, 12, 11 ....]。
我有这个jsfiddle:http://jsfiddle.net/Ra2xS/42/ 。我完全不知道哪里出了问题。谁能看一下代码并提出更正建议吗? var dim = {"width":590,"he
如何找到时间序列中最大的序列。例如,我有一个像这样的 DataFrame: index Value 1-1-2012 10 1-2-2012 14 1-3-2012 15 1-4
这是我的代码: function myFunction() { // do stuff } async.timesSeries(100, myFunction); doSomethingE
我已经在谷歌上搜索了一段时间,但没有找到合适的解决方案。我有一个包含几百万行的时间序列,其结构相当奇怪: VisitorID Time VisitDuration 1
作为 AchartEngine API 的 TimeSeries Construstor,只接受字符串作为参数,没有其他参数作为比例参数传递。那么我将如何在两种不同的比例下使用它 谢谢 最佳答案 我想
TimeSerial 函数 返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。 TimeSerial(hour,minute, second) 参数 hour 其值为
我正在绘制一个金融时间序列(见下文,这里有 1 个月的数据) 我想删除我用红叉等显示的时间段,即星期六。请注意,这些时间段并非所有没有数据的时间段,而只是星期六。 我知道有一些如何消除间隙的例子,例如
我有几年的数据,例如(作为 pandas TimeSeries): 1997-04-02 0.0 1997-04-03 0.0 1997-04-04 2.0 1997-04-0
我有一个 TimeSeries 图表,显示每个日期的一些值,并且有两个系列显示为两条不同的行。 问题是有时一个系列不包含某些特定日期的值。在这种情况下,我假设该行将从本系列的上一点延续到下一点。 不幸
我正在努力思考 Redis 的时间序列规则创建是如何工作的,我很困惑为什么 Redis 会忽略聚合中的最后一项,并且想知道这是否是预期的行为。 我在 redis-cli 中创建了一个示例代码来说明:
使用 Charts package是否可以调整 TimeSeries 图表的笔划宽度? 查看文档/examples我看到折线图显示了一个 strokeWidthPxFn,但我没有在 timeSerie
目前,我的 TimeSeries 图表每 2 秒显示一个位置的温度。 现在,如果我想每 2 秒显示一次降雨指数和温度,我该如何实现? 这是我的代码: import testWeatherService
我必须绘制时间序列图表,其中数据以纳秒为单位。但是,在我当前的实现中,我们的日期轴范围以毫秒为单位。 那么如何将日期轴范围从毫秒更改为纳秒。 谢谢。 :) 最佳答案 这是我在your post上给出的
我从 JfreeChart 开始。我能够创建 OHLC 图表。我想在同一张图表上添加收盘价的平均值。我应该是一个 TimeSeries ?您知道如何混合图表吗? 谢谢 最佳答案 将第二个数据集添加到图
我有一个时间序列索引的 df,频率为 15 分钟,持续 10 年: dat 2004-04-07 00:00:00 4.0 2004-04-07
我是一名优秀的程序员,十分优秀!