2016-12-20 1 views
2

Ich habe ein paar Grafiken mit der Möglichkeit gemacht, eine Marke hinein zu setzen, aber ich verstehe nicht, wie man die Markierung mit dem Y-Achsenwert möglich macht.flot chart movable markierungen

$.plot($("#[email protected]"), [email protected], { 
     series: { 
      lines: { 
       lineWidth: 2, 
       fill: @((Model.Series.Count() == 1).ToString().ToLower()), 
      }, 
      bars: { 
       barWidth: 0.6, 
       align: "center" 
      }, 
      points: { 
       fill: @((Model.Series.Count() == 1).ToString().ToLower()), 
      } 
     }, 
     xaxis: { 
      ticks: [email protected], 
      tickDecimals: 0 
     }, 
     colors: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Series.Select(o => o.Color).ToArray())), 
     grid: { 
      color: "#999999", 
      hoverable: true, 
      clickable: true, 
      borderWidth: 0, 
      @if (Model.LimitLine != null) 
      { 
       <text> 
        markings: [ 
         { color: '#000', lineWidth: 1, yaxis: { from: @Model.LimitLine, to: @Model.LimitLine }}, 
        ] 
       </text> 
      } 
      }, 
     legend: { 
      show: true 
     }, 
     tooltip: true, 
     tooltipOpts: { 
      content: function(label, xval, yval) { 
       var content = [email protected](ControlID)(xval) + ": " + yval; 
       return content; 
      }, 
     } 
    }); 

Wie kann ich zeigen einen Tooltip mit dem Wert?
Graph Beispiel:

enter image description here

Antwort

1

Sie können mit dem Tooltips Plugin nicht tun, aber es ist möglich, wenn sich die Tooltips zu tun. Etwas wie dieses:

$("#placeholder").bind("plothover", function (event, pos, item) { 
    if (item) { // hovering over a datapoint 
     var x = item.datapoint[0].toFixed(2), 
      y = item.datapoint[1].toFixed(2); 

     $("#tooltip").html(item.series.label + " of " + x + " = " + y) 
      .css({top: item.pageY+5, left: item.pageX+5}).fadeIn(200); 
    } else { 
     var hideTooltip = true; 

     // you need to save the Flot object for this (here as "plot") 
     $.each(plot.getOptions().grid.markings, function(idx, marking) { 
      if (Math.abs(pos.y - marking.yaxis.to) < 10) { 
       $("#tooltip").html("Limit: " + marking.yaxis.to) 
        .css({top: pos.pageY + 5, left: pos.pageX + 5}).fadeIn(200); 
       hideTooltip = false; 
       return false; 
      } 
     }); 

     if (hideTooltip) { 
      $("#tooltip").hide(); 
     } 
    }  
}); 

Basiert auf diesem example.

+0

Wenn '' 'item''' null, falsch oder undefiniert ist, wie werden Sie dazu gebracht, auf die Eigenschaften' '' pageY''' und '' pageX''' zugreifen zu können? – adripanico

+0

Eigentlich ist die Lösung fast da. Statt '' 'item.pageX''' und' '' item.pageY''' sollten Sie auf '' 'pos.pageX''' und' '' pos.pageY''' zugreifen. Möglicherweise müssen Sie auch mit dem Schwellenwert (der festcodierten "10") spielen, abhängig von Ihrer x-Achsenskala. – adripanico

+0

@adripanico Sie haben Recht, danke für den Hinweis. – Raidri