是否可以在JFreeChart图中操纵域轴的位置?

时间:2011-08-29 11:11:31

标签: jfreechart

我有一个数据集,我希望将其显示为一对直方图/条形图。一组数据,我希望显示为向上上升的“正”值集。第二组,我需要显示为“负”集,降序。它们共享一个域轴。

我可以根据需要使用CombinedDomainCategoryPlot绘制它们,但是对于一个重要的细节 - 轴出现在第二个绘图下方,而我希望它出现在两个绘图之间的中间位置。

为了记录,这些数据是已经针对基因组序列作图的序列标签。一些映射到基因组的“顶部”链,而另一些映射到“底部”或“反向”链,因此可视化的点是以这种方式表示数据。我希望能够简单地反转底部的绘图值轴并让域轴出现在中间,但它看起来不会那样。

我的假设是我必须继承或替换CombinedDomainCategoryPlot类,但是如果其他人已经找到了解决这个问题的方法,或者知道如何在代码的当前范围内正确地执行它,那么我将不胜感激。再次,为了记录,我正在使用JFreeChart的1.0.12版本(因为maven依赖性破坏与“当前”版本1.0.13)。可悲的是,JFreeChart论坛似乎也已经死了。

1 个答案:

答案 0 :(得分:2)

问题在于CombinedDomainCategoryPlot重置了添加的子图上的域。来自CombinedDomainCategoryPlot.java

public void add(CategoryPlot subplot, int weight) {
  // [..] omitted code
  subplot.setDomainAxis(null);
  // [..] omitted code
}

解决方案只是在添加子图后设置域轴:

CombinedDomainCategoryPlot mainPlot = // your plot;
CategoryAxis axis = // the axis you want to use.
CategoryPlot subPlot // the subplot in question
mainPlot.add(subPlot);
subPlot.setDomainAxis(axis);
相关问题