我想制作一个JFreeChart直方图,在放大和缩小时保持恒定数量的分档。例如,你可以通过缩小的方式看到12年,每年会有1个垃圾箱。当您放大一点时,您可能会看到12个月,每个月都会有一个垃圾箱。进一步放大可能每天每小时都有1个垃圾箱,等等。它们不一定是这么干净的箱子大小,但你明白了。
我正在使用HistogramDataset.addSeries将我的数据添加到直方图中。 bins
参数是整个集合的分箱数,不考虑缩放。
我发现我可以使用ChartPanel并覆盖其zoom方法。在这里,我可能会改变垃圾箱的数量。但是,我很难弄清楚哪里可以改变垃圾箱的数量以及应该改变什么。
编辑:
我感兴趣的是这个问题的一部分,我认为这对解决方案至关重要:
zoom
。在某些情况下,我的最终目标是创建Google财务样式控件: Google Finance style control for Java?
答案 0 :(得分:2)
答案 1 :(得分:1)
回答上面的个人问题:
ChartPanel
班级的缩放。windowToRatio
和ratioToModel
函数,因为缩放功能是给定窗口坐标的。SortedMap
作为我的数据模型,我可以轻松地从中获取subMap。功能:
private double windowToRatio(double window) {
Rectangle2D scaledDataArea = getScreenDataArea();
return (window - scaledDataArea.getMinX()) / scaledDataArea.getWidth();
}
private double ratioToModel(double ratio) {
Range domainRange = getChart().getXYPlot().getDomainAxis().getRange();
return domainRange.getLowerBound() + ratio * domainRange.getLength();
}