0

I am using JSChart for a simple time graph. I haven't found any information on their documentation to set the amount of time labels. I only want 1 appear per day. Preferable at midnight.

Right now i get 1 date label per dataset. That is too much.

Example Image

JS function initializes the Charts

_j(function () {
    /* ChartJS
     * -------
     * Here we will create a few charts using ChartJS
     */


    var graphData = $graph_data;
    var graphLabels = $graph_labels;


    var lineChartData = {
        labels: graphLabels,
        datasets: [
            {
                label: "Count",
                fillColor: "rgba(210, 214, 222, 1)",
                strokeColor: "rgb(60, 141, 188)",
                pointColor: "rgba(210, 214, 222, 1)",
                pointStrokeColor: "#c1c7d1",
                pointHighlightFill: "#fff",
                pointHighlightStroke: "rgba(220,220,220,1)",
                data: graphData
            },
            {
                label: "Call",
                fillColor: "rgba(60,141,188,0.9)",
                strokeColor: "rgba(255,0,0,0.8)",
                pointColor: "#3b8bba",
                pointStrokeColor: "rgba(60,141,188,1)",
                pointHighlightFill: "#fff",
                pointHighlightStroke: "rgba(60,141,188,1)",
                data: [28, 50, 50, 50, 50, 50, 90]
            }
        ]
    };


    var lineChartOptions = {
        //Boolean - If we should show the scale at all
        showScale: true,
        //Boolean - Whether grid lines are shown across the chart
        scaleShowGridLines: false,
        //String - Colour of the grid lines
        scaleGridLineColor: "rgba(0,0,0,.05)",
        //Number - Width of the grid lines
        scaleGridLineWidth: 1,
        //Boolean - Whether to show horizontal lines (except X axis)
        scaleShowHorizontalLines: true,
        //Boolean - Whether to show vertical lines (except Y axis)
        scaleShowVerticalLines: true,
        //Boolean - Whether the line is curved between points
        bezierCurve: true,
        //Number - Tension of the bezier curve between points
        bezierCurveTension: 0.3,
        //Boolean - Whether to show a dot for each point
        pointDot: false,
        //Number - Radius of each point dot in pixels
        pointDotRadius: 4,
        //Number - Pixel width of point dot stroke
        pointDotStrokeWidth: 1,
        //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
        pointHitDetectionRadius: 20,
        //Boolean - Whether to show a stroke for datasets
        datasetStroke: true,
        //Number - Pixel width of dataset stroke
        datasetStrokeWidth: 2,
        //Boolean - Whether to fill the dataset with a color
        datasetFill: false,
        //String - A legend template
        // legendTemplate: "<ul class='<%=name.toLowerCase()%>-legend'><% for (var i=0; i<datasets.length; i++){%><li><span style='background-color:<%=datasets[i].lineColor%>'></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>",
        //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
        maintainAspectRatio: true,
        //Boolean - whether to make the chart responsive to window resizing
        responsive: true,
        scales: {
            xAxes: [{
                type: 'time',
                time: {
                    displayFormats: {
                        'millisecond': 'MMM DD',
                        'second': 'MMM DD',
                        'minute': 'MMM DD',
                        'hour': 'MMM DD',
                        'day': 'MMM DD',
                        'week': 'MMM DD',
                        'month': 'MMM DD',
                        'quarter': 'MMM DD',
                        'year': 'MMM DD'
                    }
                }
            }]
        }

    };

    //-------------
    //- LINE CHART -
    //--------------
    var lineChartCanvas = document.getElementById("$chartID").getContext("2d");
    var lineChart = new Chart(lineChartCanvas);
    lineChart.Line(lineChartData, lineChartOptions);


});

PHP calls the template above.

 $graphTitle = "GRAPH API";
$chartID = "lineChartAPI";


$graph_data = json_encode($graph_data);
//reverse Reihenfolge der Labels
$graph_labels = json_encode($graph_labels);

eval(get_template("start_stat_graph"));
$data = $tpl;
AHahn
  • 137
  • 1
  • 10

2 Answers2

0

Try to use http://www.highcharts.com/ it's much better in config.

MaoStream
  • 188
  • 9
  • Well before, i had one Json Object for the x-Data and one Json Object for the y-Data. How i can i merge those to apply into the series? https://jsfiddle.net/5tj8sj8m/ – AHahn Aug 11 '16 at 10:08
  • Did check that out. Didn't help much. Still staying with JSChart because it works. Tried highcharts and it just didn't work with any time format i put the data in. – AHahn Aug 11 '16 at 11:58
0

This Post helped alot

So the workaround for few x-axis legend entries is just to manipulate the data and only set for example every 5th data with a simple %5 if-statement.

Community
  • 1
  • 1
AHahn
  • 137
  • 1
  • 10