2016-12-02 35 views
1

根據這個實例,如何使用Incanter獲得標準化的放樣條形圖?

(use '(incanter core stats charts datasets)) 

(with-data (get-dataset :airline-passengers) 
    (view (stacked-bar-chart :month :passengers :group-by :year :legend true))) 

我怎樣才能讓每個全局酒吧等於100%,使堆疊元素之間充滿相對比較?

現在我得到這樣的: http://phloxblog.in/angulard3/images/Nor-Stackbar.jpg

我怎樣才能做到這一點呢? enter image description here

回答

1

我找到了答案。

(use '(incanter core stats charts datasets)) 

(import 
    '[org.jfree.chart ChartFactory ChartUtilities JFreeChart StandardChartTheme] 
    '[org.jfree.chart.plot CategoryPlot] 
    '[org.jfree.chart.renderer.category CategoryItemRenderer StackedBarRenderer]) 

(with-data (get-dataset :airline-passengers) 
    (view 
    (let [chart (stacked-bar-chart :month :passengers :group-by :year :legend true) 
     plot (-> chart .getCategoryPlot) 
     renderer (-> plot .getRenderer) 
     _ (.setRenderAsPercentages renderer true)] 
    chart))) 

前: enter image description here

後: enter image description here

如果你想獲得百分比軸,你可以做

(use '(incanter core stats charts datasets)) 

(import 
    '[org.jfree.chart ChartFactory ChartUtilities JFreeChart StandardChartTheme] 
    '[org.jfree.chart.axis NumberAxis] 
    '[org.jfree.chart.labels StandardCategoryItemLabelGenerator ItemLabelPosition ItemLabelAnchor] 
    '[org.jfree.chart.plot CategoryPlot] 
    '[org.jfree.chart.renderer.category StackedBarRenderer] 
    '[java.text DecimalFormat]) 

(with-data (get-dataset :airline-passengers) 
    (view 
    (let [chart (stacked-bar-chart :month :passengers :group-by :year :legend true) 
     plot (-> chart .getCategoryPlot) 
     range-axis (-> plot .getRangeAxis) 
     percent-format (DecimalFormat. "#%") ;;"#.0%" 
     _ (.setNumberFormatOverride range-axis percent-format) 
     renderer (-> plot .getRenderer) 
     _ (.setRenderAsPercentages renderer true)] 
    chart))) 
相關問題