2011-08-29 80 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); 
相關問題