The above example is somehow a little bit misleading. In fact, developers don't have to prepare the real data before feed it into a chart because chart components support live data mechanism. With live data, developers could separate the data from the view. In other words, developer can add, change, and remove data from the data model and the chart would be redrawn accordingly. For some advanced implementation, developers can even provide their own chart model by implementing the org.zkoss.zul.ChartModel interface.