Documentation

Report Edit

Column Chart Example

This example shows how a chart and a grid can be in sync using the same data. Handles on the chart can be used to tweak chart values and changes are automatically reflected in the grid.

JanFebMarAprMayJunJulAugSepOctNovDec050100150200250109215106196112168119212120242117254121205134246137205149253146253135276
MonthV1V2Delta
Jan108.56215.06106.50
Feb105.93196.2290.29
Mar111.59168.3356.74
Apr119.25212.3393.08
May120.19241.66121.47
Jun117.21254.44137.22
Jul120.58205.3684.78
Aug134.19245.74111.55
Sep137.42204.9567.53
Oct149.08252.88103.80
Nov145.63253.25107.63
Dec134.99275.67140.68
<Svg style="width:600px; height:400px;">
   <Chart offset="20 -20 -40 40" 
          axes={{ 
              x: { type: CategoryAxis }, 
              y: { type: NumericAxis, vertical: true, snapToTicks: 0 } 
           }}>
      <Gridlines/>
      <Repeater records-bind="$page.points" recordAlias="$point">
         <Column colorIndex-expr="{$index}"
                 width={0.5}
                 offset={0}
                 x-bind="$point.x"
                 y-bind="$point.v1"
                 tooltip-tpl="{$point.x} {$point.v1:n}"
                 selection={columnSelection} />

         <Column colorIndex-expr="{$index}+2"
                 width={0.5}
                 offset={0}
                 x-bind="$point.x"
                 y0-bind="$point.v1"
                 y-bind="$point.v2"
                 tooltip="X2"
                 selection={columnSelection} />

         <Marker x-bind="$point.x"
                 y-bind="$point.v1"
                 xOffset={0}
                 size={10}
                 colorIndex-expr="{$index}"
                 style="cursor:move;"
                 draggableY>
            <Rectangle anchors="0 1 0 0"
                       offset="-30 10 -10 -10"
                       style="fill:rgba(255, 255, 255, 0.8);stroke:#ccc">
               <Text tpl="{$point.v1:n;0}" ta="middle" dy="0.4em" />
            </Rectangle>
         </Marker>
         <Marker x-bind="$point.x"
                 y-bind="$point.v2"
                 xOffset={0}
                 size={10}
                 colorIndex-expr="{$index}+2"
                 style="cursor:move;"
                 draggableY >
            <Rectangle anchors="0 1 0 0"
                       offset="-30 10 -10 -10"
                       style="fill:rgba(255, 255, 255, 0.8);stroke:#ccc">
               <Text tpl="{$point.v2:n;0}" ta="middle" dy="0.4em" />
            </Rectangle>
         </Marker>
      </Repeater>
   </Chart>
</Svg>
<Grid records-bind="$page.points"
      columns={[
         { header: 'Month', field: 'x' },
         { header: 'V1', field: 'v1', format: 'n;2', align: "right" },
         { header: 'V2', field: 'v2', format: 'n;2', align: "right" },
         { header: 'Delta', value: { expr: "{$record.v2}-{$record.v1}" }, format: 'n;2', align: "right" },
      ]}
      selection={{type: KeySelection, keyField: 'x', bind: '$page.selection' }}/>
Copied!Cx Fiddle