// C3 Area Plot // _A simple static area graph._ // Generate the Data // Generate the data to visualize. The data to visualize has to be an array. This example // demonstrates that it can be an array of anything. Accessor functions are used to pull out // various aspects of the data, such as x and y values. // This creates an array of objects. Each element in the array in an // object with an `x_value` and a `y_value`. The `x_value`'s go from 0 to 10 and the `y_value`'s // are the x value cubed. var cubed_data = []; for (let i = 0; i <= 10; i++) cubed_data.push({ x_value: i, y_value: i * i * i }); // Create a C3 Plot // Create a `c3.Plot` chart and attach it to a specific _div_ **anchor ** in the DOM. Assign it a specific // height and a relative width and bind it to the generated `cubed_data`. The height and width are optional // and could be setup using CSS, JQuery, or any other DOM manipulation instead. var area_example = new c3.Plot({ anchor: '#area_example_plot', height: 300, width: "75%", data: cubed_data, // Setup the horizontal and vertical **scales ** for the plot.Scales are based on _D3 scales_. // When preparing scales for C3 setup the domain based on your user units. C3 will take // care of the range, which will represent pixels. h: d3.scale.linear().domain([0, 10]), // horizontal scale v: d3.scale.linear().domain([0, 1000]), // vertical scale // **Accessor functions** which describe how to get x and y values from the user data. x: (d) => d.x_value, y: (d) => d.y_value, // Reserve **margins ** for the top and right of the plot.This is done to allow the axis labels // to fully display. This is needed because most browsers currently don't support _overflow: visible_ // for _svg_ elements. margins: { top: 10, right: 20, }, // Setup `c3.Axis` objects. C3 plots may have up to 4 **axes ** attached for the top, bottom, // left, and right of plots. Axes may also be created independent of plots for layout flexibility // which is covered in another example. These axes also enable grid lines in the plot. They are // dotted lines because of styles setup in the `examples.less` stylesheet. axes: [ new c3.Axis.X({ tick_size: 10, grid: true, }), new c3.Axis.Y({ grid: true, }), ], // Plots do not render any data by themselves. Instead, they host a set of **layers ** which are // superimposed on the plot to visualize the same or different data sets. There are different // types of layers such as line graphs, scatter plots, swim - lane segments, etc. This example // just uses a very simple area plot. The `interpolate: 'basis'` causes the rendered path to use // a smooth curve based on the data points instead of straight linear sections. layers: [ new c3.Plot.Layer.Area({ interpolate: 'basis', // Make a smooth curve using "basis" interpolation }), ], }); // Resize the chart to fit the window window.onresize = () => { area_example.resize(); } // Render the chart! area_example.render();