Clojure 如何使用白炽灯获得标准化的标桩条形图?

Clojure 如何使用白炽灯获得标准化的标桩条形图?,clojure,jfreechart,incanter,Clojure,Jfreechart,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%,从而允许在堆叠元素之间进行完整的相对比较 现在我得到了这样的结果: 我怎样才能做到这一点呢? 我找到了答案 (us

以此为例,

(use '(incanter core stats charts datasets))

(with-data  (get-dataset :airline-passengers)
  (view (stacked-bar-chart :month :passengers :group-by :year :legend true)))
如何使每个全局条等于100%,从而允许在堆叠元素之间进行完整的相对比较

现在我得到了这样的结果:

我怎样才能做到这一点呢? 我找到了答案

(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)))
之前:

之后:

如果你想得到轴的百分比,你可以这样做

(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)))