Как получить нормализованную гистограмму с помощью 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

Как я могу достичь этого вместо этого? введите описание изображения здесь

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

До:

После:

Если вы хотите получить ось в процентах, вы можете сделать

(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)))
Другие вопросы по тегам