Line Chart using PHP and JS

How to create a Line Chart using PHP and JavaScript

Line charts are the most basic and simplest type of chart used in many different fields. Let us discuss the steps involved in creating a line chart using PHP and JavaScript with Pluscharts, a JavaScript charting library to build charts.

Step 1: Creating the MySQL table

For this, consider a table of data, consisting of seven data entries. The columns are labeled id, month and sales. This table can be created using the following code.

CREATE TABLE shop (
id INT NOT NULL,
month VARCHAR(30) NOT NULL,
sales INT NOT NULL,
 PRIMARY KEY (id),  
 UNIQUE (month)
);

INSERT INTO shop
   (id, month, sales)
VALUES
   (1, “Jan”, 50),
   (2, “Feb”, 10),
   (3, “Mar”, 20),
   (4, “Apr”, 20),
   (5, “May”, 30),
   (6, “Jun”, 10),
   (7, “Jul”, 20);

Step 2: Connecting to the database file

Once you have entered the data in the database, you can start with creating your project folder and the main file. But before you begin with the main code, don’t forget to create a subfolder (optional), to hold the secondary files that need to be included in the main code.

Now, let us move to create a new file, that will contain a PHP code to fetch the data from the database.

<?php

$dbservername = “localhost”;

$dbusername = “”;

$dbpassword = “”;

$dbname = “test”;

$conn = mysqli_connect($dbservername, $dbusername, $dbpassword, $dbname);

if (!$conn) {

die(“Connection failed: “. mysqli_connect_error());

}

?>

Include the file, in the main file and in order to check the connection establishment, run the code in the browser, preferably Chrome. Store both sets of data, months and sales in two arrays.

<?php  

include_once ‘dbh.php’;

$sql= “SELECT*FROM shop”;

$result= mysqli_query($conn, $sql);

$shops= array();

if (mysqli_num_rows($result) >0)

{

   while ($row= mysqli_fetch_assoc($result)) {

   $shops[]= $row;

}

}

$a= array();

foreach ($shops as $shop) {

$a[]= $shop[‘sales’];

}

$b= array();

foreach ($shops as $shop) {

$b[]= $shop[‘month’];

}

?>

Step 3: Writing the Line Chart example code

Create an element, where you want to render your chart, using the following code.

For example, here we create an element with id, ‘line-chart-example’.

<div id=”line-chart-example”></div>

Now, since the pluscharts library is built upon d3, we load d3 first and then pluscharts, using the following scripts.

   <script src=”https://d3js.org/d3.v5.min.js”></script>

               <script src=”path-to/src/pluscharts.js”></script>

Then we assign the data from PHP variables to JS variables, using the following code.

<script type=”text/javascript”>

   var sales= <?php echo json_encode($a ); ?>;

  var months= <?php echo json_encode($b ); ?>;  

The next step will be to write a JavaScript code to set up a line chart.

pluscharts.draw({

   drawOn : “#line-chart-example”,

   type: “line”,

   dataset : {

       data: [

           {

               x: sales,

               y: months

}

                   ],

       lineColor: “#e46161”,

       lineWidth: 2,

       legendLabel: “visitors”

   },

   options: {

       text: {

           display: true,

           color: “#6c478c”

       },

       points: {

           display: true,

           color: “#e46161”,

           radius: 3

       },

       axes: {

           x: {

               display: true,

               scale: 1,

               min: 0,

               max: 160

           },

           y: {

               display: true,

               scale: 3,

               min: 0,

               max: 100

           }

       },

       legends: {

           display: true,

           width: 20,

           height: 20

       },

       size: {

           width: ‘container’, //give ‘container’ if you want width and height of initiated container

           height: ‘400’

       }

   }

})

</script>

For better understanding let us break this code into parts.

pluscharts.draw

({   })

This function is used to initiate the chart. Under this draw function, we pass the details of the chart including the data and options as an argument to the draw() function.

   drawOn : ‘#line-chart-example’,

The drawOn element is used to indicate the element where the chart is to be generated.

   type: “line”,

The type of chart to be drawn is specified in the type element.

dataset: {

       data: [

           {

               x: sales,

               y: months

}

                   ],

       lineColor: “#e46161”,

       lineWidth: 2,

       legendLabel: “visitors”

   },

The dataset is used to insert data values, background color, border color, border width, label and legend labels. Note that here, instead of specifying the data values in data and labels, we have given the name of the array where the data is stored, which is “sales” and “labels” respectively.

options: {

       text: {

           display: true,

           color: “#6c478c”

       },

       points: {

           display: true,

           color: “#e46161”,

           radius: 3

       },

       axes: {

           x: {

               display: true,

               scale: 1,

               min: 0,

               max: 160

           },

           y: {

               display: true,

               scale: 3,

               min: 0,

               max: 100

           }

       },

       legends: {

           display: true,

           width: 20,

           height: 20

       },

       size: {

           width: ‘container’, //give ‘container’ if you want the width and height of the initiated container

           height: ‘400’

       }

   }

})

The options are where all the customization of the chart is done. Here the text and points, along with their color are specified. The x and y-axis minimum and maximum range can be specified, a display option is also available. The visibility and dimensions of legends can also be set here. The size of the chart is specified and can be set to ‘container’ in case the chart has to be of the same height and width as its initiated container.

Sowmya

Sowmya

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright 2019 © All rights Reserved. Design by Pluscharts