2009-12-29 141 views
17

有沒有辦法調整酒吧的酒吧寬度?Jfreechart酒吧的寬度

我用下面的代碼創建我的圖表。

final JFreeChart chart = ChartFactory.createBarChart("Report", // chart title 
       "Date", // domain axis label 
       "Number", // range axis label 
       dataset, // data 
       PlotOrientation.VERTICAL, // orientation 
       true, // include legend 
       true, // tooltips? 
       false // URLs? 
       ); 

回答

5

根據戴夫吉爾伯特(JFreeChart的項目負責人)

酒吧寬度自動 計算和將取決於 圖表或曲線圖寬度和在數據集 項的數目上。

查看討論here

8

您不能直接指定條的寬度,但可以更改影響寬度的幾個屬性。你應該看看lowerMarginupperMargin通過爲CategoryAxis或itemMargin屬性在BarRenderer定義categoryMargin屬性。

例如:

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
    renderer.setItemMargin(.1); 

雙重在setItemMargin(double percent)指定爲類別軸的總長度將被用於相同的類別中的條之間的空間的百分比(默認爲0.2或20%)。這個值越小,棒條越大。

16

您還可以設置條的最大寬度。如果您的圖表很寬,但是有時只有一個或兩個數據點,並且您不希望一個大胖子佔據整個區域,這很有用。

CategoryPlot categoryPlot = chart.getCategoryPlot(); 
BarRenderer br = (BarRenderer) categoryPlot.getRenderer(); 
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart 
+0

謝謝!工作過一種享受。 – Buffalo 2013-04-30 06:51:03

5

使用切緣陽性和零沒有得到結果之後,我嘗試使用負數爲itemMargin,看看會發生什麼。酒吧開始變得更厚。不過,我不知道這是否被推薦,因爲如果沒有足夠的可用空間,您將會重疊。

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
renderer.setItemMargin(-2); 
+0

輝煌。我再次遇到同樣的問題,我無法使用setMaximumBarWidth實現任何功能,但這是個竅門。謝謝。 – Buffalo 2014-01-23 13:24:30

+0

也是這裏的情況!非常感謝..它訣竅.. – 2014-09-16 04:25:02