JFreeChart带有可选择的域轴和缩放功能

3
如何实现类似于https://www.amcharts.com/demos/line-chart-with-scroll-and-zoom/的图表?
我特别关注以下功能:
  1. 能够通过两个选择控件选择域轴的窗口。
  2. 能够通过选择域轴的一部分进行缩放。
  3. 能够缩小并查看更大的画面。
  4. 能够映射到范围轴(Y)并在任意点上查看该气球工具提示中的值(无标记)
我已经尝试过在Scrollable JFree domain axis and custom marker label中使用trashgod的帮助使域可滚动。
然而,我仍然缺少这些功能才能有效地使用图形。

这个问题并不是太宽泛。有没有解释一下为什么被归类为太宽泛了? - user3833308
我在这个问题中寻求工具、书籍等推荐!干得好,幽灵猎人们。敢于陈述你的观点。 - user3833308
1
我选择回答这个问题;虽然它可能有些宽泛,但是通过结合几种现有的方法可以得出一个有用的答案。 - trashgod
1个回答

6

你需要结合几种方法:

  1. 平移控制:调用setDomainPannable(true)启用平移;在您的控件中,使用panDomainAxes(),如实现所示,在mouseDragged()中使用建议的鼠标操作

  2. 缩放:不支持通过拖动轴进行缩放,但支持在绘图区域上拖动;向右拖动以查看选择矩形。为确保鼠标滚轮仅在滚动时缩放域轴,请在ChartPanel上调用setRangeZoomable(false);反之亦然。

  3. 缩小:向左拖动以缩小或使用按钮处理程序,如此处所示。

  4. 工具提示:在您选择的ChartFactory中启用工具提示。如果需要,可以创建自定义的XYToolTipGenerator,如此处所示。


大多数问题都可以通过添加 chartPanel.setMouseWheelEnabled(true); 来解决。谢谢。我该如何确保它只在滚动鼠标轮时缩放域轴? - user3833308
我正在使用 this.chartPanel = new ChartPanel(this.chart); - 不知道是否可以覆盖鼠标监听器事件以覆盖自定义缩放。 - user3833308
抱歉,我从未尝试过;请查找 org.jfree.chart.MouseWheelHandler - trashgod
很高兴能帮上忙;更多关于 set*Zoomable(),请参考上文。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接