如何使用 Incanter 获得标准化堆积条形图?
How to get a normalized staked bar chart using 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%,从而允许堆叠元素之间的完整相对比较?
现在我得到这样的东西:
我该如何实现呢?
我找到了答案。
(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)))
按照这个例子,
(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)))