La solution utilise tooltipOpts ->contenu procédé avec une fonction de rappel pour revenir correctement les données dynamiques à l'étiquette. J'ai compris que le passage d'un 4ème argument à la fonction de rappel de "tooltipOpts" vous donne en fait l'ensemble de l'objet de données à partir duquel est construit le graphique/graphe. A partir de là, vous pouvez facilement extraire les étiquettes de l'axe X, en utilisant le deuxième argument de cette même fonction comme index de l'étiquette à extraire.
Exemple:
objet de données Je passe à la fonction du terrain:
[
{ data: [[1,137],[2,194],[3,376],[4,145],[5,145],[6,145],[7,146]] }
],
{
bars: { show: true, fill: true, barWidth: 0.3, lineWidth: 1, fillColor: { colors: [{ opacity: 0.8 }, { opacity: 1}] }, align: 'center' },
colors: ['#fcc100'],
series: { shadowSize: 3 },
xaxis: {
show: true,
font: { color: '#ccc' },
position: 'bottom',
ticks: [[1,'Thursday'],[2,'Friday'],[3,'Saturday'],[4,'Sunday'],[5,'Monday'],[6,'Tuesday'],[7,'Wednesday']]
},
yaxis:{ show: true, font: { color: '#ccc' }},
grid: { hoverable: true, clickable: true, borderWidth: 0, color: 'rgba(120,120,120,0.5)' },
tooltip: true,
tooltipOpts: {
content: function(data, x, y, dataObject) {
var XdataIndex = dataObject.dataIndex;
var XdataLabel = dataObject.series.xaxis.ticks[XdataIndex].label;
return y + ' stories created about your page on ' + XdataLabel
},
defaultTheme: false,
shifts: { x: 0, y: -40 }
}
}
Histogramme rendu de l'objet de données ci-dessus:
Comme vous pouvez le voir sur l'aperçu de l'image, la logique utilisé pour rendre former dynamiquement les données réelles du contenu de l'étiquette est la suivante:
tooltipOpts: {
content: function(data, x, y, dataObject) {
var XdataIndex = dataObject.dataIndex;
var XdataLabel = dataObject.series.xaxis.ticks[XdataIndex].label;
return y + ' stories created about your page on ' + XdataLabel;
},
defaultTheme: false,
shifts: { x: 0, y: -40 }
}
ShowToolTip() est mis en œuvre ici (voir la source): http://www.flotcharts.org/flot/examples/interacting/index.html – razzed
@peter Que faire si je veux afficher la zone de pourcentage couverte par chaque pile au lieu de sa valeur. – sunil
Une solution plus générale (qui fonctionne pour plus de deux séries) consiste à soustraire tous les points de données suivants, c'est-à-dire 'y = item.datapoint [1]; pour (var i = 2; i