Suche // Search:

Posts mit dem Label Stacked Bar Chart werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Stacked Bar Chart werden angezeigt. Alle Posts anzeigen

09.04.2010

FormCalc Diagramme Teil 3 - Gestapeltes Säulendiagramm
//
FormCalc Charts Pt.3 - Stacked Bar Charts

Dies ist ein Upgrade zum einfachen Säulendiagramm von neulich.
Hier werden nun aus verschiedenen Eingabewerten gestapelte Säulendiagramme generiert.
Dafür kommt eine Tabelle zum Einsatz, die es erlaubt sowohl Zeilen als auch Spalten hinzuzufügen.
Die Kalkulation der Säulen übernimmt auch hier ein verstecktes Feld "Trigger", dass mit FomCalc arbeitet.

This is an Upgrade of the simple bar chart I posted on the other day.
This one generates stacked bar charts from the input values.
Therefore it uses a table that allows to add rows and columns.
The calculations of the bars is done by a hidden field "trigger" with a FormCalc script.

FormCalc Script:
var nRows = Input.Table.ChartValues.instanceManager.count

_Chart.setInstances(nRows)
var nColumns = Input.Table.ChartValues[nRows -1].Col.instanceManager.count
Chart[*].Stack._Bar[*].setInstances(nColumns)
Chart[*].Labels._Label[*].setInstances(nColumns)


for i=0 upto nRows -1 step 1 do
for j=0 upto nColumns -1 step 1 do
var BarValue = Input.Table.ChartValues[i].Col[j].Amount


var nColor = Choose(j+1, "238,0,0", ;Red
"255,48,48", ;FireBrick
"255,99,71", ;Tomato
"255,127,80", ;Coral
"255,140,0", ;DarkOrange
"255,165,0", ;Orange
"255,215,0", ;Gold
"255,255,0", ;Yellow
;"238,238,0", ;Yellow2
"154,205,50") ;YellowGreen
Chart[i].Stack.Bar[j].BarGraph.value.rectangle.fill.color.value = nColor
Chart[i].Stack.Bar[j].BarGraph.value.rectangle.edge.color.value = nColor


var ChartMod = UnitValue(BarValue, "in") / 25.4
Chart[i].Stack.Bar[j].BarGraph.h = UnitValue(ChartMod, "in")
Chart[i].Labels.Label[j].BarValue.h = UnitValue(ChartMod, "in")
Chart[i].Labels.BarTotal = Input.Table.ChartValues[i].Sum
Chart[i].Labels.BarLabel = Input.Table.ChartValues[i].Label

if(Input.Table.ChartValues[i].Col[j].Amount >= 3) then
Chart[i].Labels.Label[j].BarValue.value.text.value = Input.Table.ChartValues[i].Col[j].Amount
else
Chart[i].Labels.Label[j].BarValue.value.text.value = ""
endif


var ContainerHeight = UnitValue(Chart.h, "in")
var ChartOffset = UnitValue(Input.Table.ChartValues[i].Sum, "in") / 25.4
Chart[i].Stack.y = ContainerHeight - ChartOffset
Chart[i].Labels.y = ContainerHeight - ChartOffset - UnitValue("5mm", "in")
endfor
endfor
Gestapeltes Säulendiagramm // Stacked Bar Chart:


Beispiel
//
Example:
https://files.acrobat.com/a/preview/2d351f73-093f-44fa-9881-2fbb04ed3dc8