使用数据库值动态绘制折线图


Draw line chart dynamically using database values

我正在尝试绘制折线图,但不知道如何在LineChart中使用jquery传递动态数据库值?

我已经搜索过了,但是在堆栈中找不到答案。

我传递两个字段:1)日期-时间(Y轴)2)当日下载次数(X轴)

有没有人在他们的网站上使用这种设施?我应该使用哪个插件?

这是HTML

<section class="panel corner-flip">
<header class="panel-heading no-borders">
  <h2><strong>LINE</strong> Chart </h2>
  <label class="color">Plugin <strong> Flot chart in table</strong></label>
</header>
<div class="widget-chart chart-dark">
  <table class="flot-chart" data-type="lines" data-tool-tip="show" data-width="100%" data-height="220px">
     <thead>
        <tr>
           <th></th>
           <th style="color : #3db9af;">Page View</th>
        </tr>
     </thead>
     <tbody>
        <tr>
           <th>JAN</th>
           <td>295</td>
        </tr>
        <tr>
           <th>FEB</th>
           <td>3145</td>
        </tr>
        <tr>
           <th>MAR</th>
           <td>1515</td>
        </tr>
        <tr>
           <th>APR</th>
           <td>4578</td>
        </tr>
        <tr>
           <th>MAY</th>
           <td>4041</td>
        </tr>
        <tr>
           <th>JUN</th>
           <td>12090</td>
        </tr>
        <tr>
           <th>JUL</th>
           <td>4235</td>
        </tr>
        <tr>
           <th>AUG</th>
           <td>1215</td>
        </tr>
        <tr>
           <th>SEP</th>
           <td>2315</td>
        </tr>
        <tr>
           <th>OCT</th>
           <td>5315</td>
        </tr>
        <tr>
           <th>NOV</th>
           <td>2015</td>
        </tr>
        <tr>
           <th>DEC</th>
           <td>315</td>
        </tr>
     </tbody>
  </table>

这是js文件…

var     bars = false,
lines = true,
pie=false;
var     createFlot=function($chageType , $change){ 
var el=$("table"+($change ? $change:".flot-chart"));
el.each(function() {      
    var colors = [], data = $(this).data(),
    gridColor=data.tickColor || "rgba(0,0,0,0.2)";
    $(this).find("thead th:not(:first)").each(function() {
             colors.push($(this).css("color"));
    });
    if($chageType){
        bars = $chageType.indexOf("bars") != -1;
        lines = $chageType.indexOf("lines") != -1;
        pie = $chageType.indexOf("pie") != -1;
        $(this).next(".chart_flot").hide();
    }else{
        if(data.type){
            bars = data.type.indexOf("bars") != -1;
            lines = data.type.indexOf("lines") != -1;
            pie = data.type.indexOf("pie") != -1;
        }
    }
$(this).graphTable({ series: 'columns', position: data.position || 'after',  width: data.width, height: data.height, colors: colors },
 {
    series: { stack: data.stack ,    pie: { show: pie , innerRadius: data.innerRadius || 0,  stroke: {  shadow: data.pieStyle=="shadow" ? true:false } , label:{ show:data.pieLabel } }, bars: { show: bars , barWidth: data.barWidth || 0.5, fill: data.fill || 1, align: "center"  } ,lines: { show: lines  , fill:0.1 , steps: data.steps } },
    xaxis: { mode:  data.mode || "categories", tickLength: 0 },
    yaxis: { tickColor: gridColor ,max:data.yaxisMax,
    tickFormatter: function number(x) {  var num; if (x >= 1000) { num=(x/1000)+"k"; }else{ num=x; } return num; }
                                    },  
    grid: { borderWidth: {top: 0, right: 0, bottom: 1, left: 1},color : gridColor },
    tooltip: data.toolTip=="show" ? true:false  ,
    tooltipOpts: { content: (pie ? "%p.0%, %s":"<b>%s</b> :  %y")  }
                            });
                    });
        }
        // Create Flot Chart
        createFlot();
        $(".chart-change a").click(function (e) {
                var el=$(this),data=el.data();
                el.closest(".chart-change").find("a").toggleClass("active");
                el.closest(".chart-change").find("li").toggleClass("active");
                createFlot(data.changeType,data.forId);
        });
        $(".label-flot-custom").each(function () {
            var el=$(this), data=el.data() ,colors = [] ,lable=[] , li="";
                $(data.flotId).find("thead th:not(:first)").each(function() {
                              colors.push($(this).css("color"));
                              lable.push($(this).text());
                });         
                for(var i=0;i<lable.length;i++){
                    li += '<li><span style="background-color:'+ colors[i] +'"></span>'+ lable[i] +" ( "+$(data.flotId).find("tbody td").eq(i).text()+' ) </li> ';
                }
                el.append("<ul>"+li+"</ul>");
                if($(data.flotId).prev(".label-flot-custom-title")){
                    var height=$(data.flotId).next(".chart_flot").css("height");
                    $(data.flotId).prev(".label-flot-custom-title").css({"height":height, "line-height":height });
                }
        });

试试这个例子,这会帮助你解决你的问题。

这里是这个示例的链接:折线图示例

,您可以使用以下语法更改x轴上的标签:

labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

试着在php中像这样修改

    labels: [
     <?php foreach($month as $value){
       echo '"'.$value.'"'; 
      }
     ?>]