2011-08-29 76 views
2

我有一个数据集,我想要显示为一对直方图/条形图。一组数据,我想显示为一组正向上升的“正值”值。第二组,我需要显示为一个“负”集,下降。他们共享一个域轴。是否可以在JFreeChart图中操作Domain轴的位置?

我可以在所有使用CombinedDomainCategoryPlot的情况下绘制它们,但对于一个重要的细节 - 轴出现在第二个图的下方,而我希望它出现在两个图的中间。

为了记录,这些数据是已经被映射到基因组序列的序列标签。有些映射到基因组的“顶部”链,其他映射到“底部”或“反向”链,因此可视化的要点是以这种方式表示数据。我曾希望能够简单地颠倒底部的绘图值轴,并将域轴出现在中间,但似乎没有这样工作。

我的假设是,我将不得不子类化或替换CombinedDomainCategoryPlot类,但是如果其他人已经找到解决方法或知道如何在代码的当前范围内正确地做到这一点,我将不胜感激。同样,为了记录,我正在使用JFreeChart 1.0.12版(因为maven依赖破坏与“当前”版本1.0.13)。可悲的是,JFreeChart论坛似乎也死了。

+0

你在代码尝试什么?尝试创建两个子图,将它们添加到组合中,并在已将图添加到组合后设置轴。 – Jes

+0

@Jes Doh!太精彩了。我坐下来,盯着代码20分钟今天早上,并阅读线,其中的subplots获取他们的轴设置为null时,他们被添加到组合情节,并从来没有想过将它添加回到一个或其他子情节。 – Bignose

+0

我只是发布完整的解释,然后;) – Jes

回答

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); 
相关问题