2010-12-10 60 views
2

我试图在JFreeChart中实现具有特殊要求的a timeseries chart。我可以绘制图表,但我不知道如何在图表的最后一个值处实现垂直红线。它应该总是在同一个地方,并且应该总是与最后一个值相交。将静态网格线添加到JFreeChart时间序列图表

我完全没有想到如何做到这一点。我在想,它可能会作为一个静态网格线来实现,但我不知道如何指定一个。

此外,图表的大小将是静态的,所以有些迂回的做法可以接受,希望不需要引入任何第三方库。

我想要实现的图像可以找到here

谢谢。

回答

5

嗯,我解决它使用标记。下面是它的代码:

JFreeChart chart = ChartFactory.createTimeSeriesChart(...); 
XYPlot plot = chart.getXYPlot(); 
Long timestampToMark = new Date().getTime(); 
Marker m = new ValueMarker(timestampToMark); 
m.setStroke(new BasicStroke(2)); 
m.setPaint(Color.RED); 
plot.addDomainMarker(m); 

也许别人会觉得这个有用。

+0

+ +1为更灵活的解决方案。 – trashgod 2012-02-17 01:36:05

1

我只是设置一个自定义十字线的最后一个域值:

XYPlot plot = chart.getXYPlot(); 
plot.setDomainCrosshairVisible(true); 
plot.setDomainCrosshairPaint(Color.red); 
plot.setDomainCrosshairStroke(new BasicStroke(3f)); 
plot.setDomainCrosshairValue(dataset.getXValue(0, dataset.getItemCount(0) - 1)); 
+1

如上所述,使用标记 – 2012-02-10 21:43:52

+0

谢谢!我会试一试。 – trashgod 2012-02-10 23:30:22