Ich habe ein Liniendiagramm, das 2 Zeilen zeigt: eine stellt einen Datumsbereich mit Werten und die andere Zeile ist die vorherige Periode (auch Daten) mit den vorherigen Werten.Google Liniendiagramm Tool-Tipps mit mehreren Spalte Daten
Ich möchte das relevante Datum und den Wert in den Tool-Tipps für jede Zeile anzeigen.
die Tooltips wird wie folgt aussehen:
das, was ich habe jetzt ist:
function drawChart(chartData, elemId, chartWidth, chartHeight, startDate, endDate) {
var chartToDraw = new google.visualization.DataTable();
chartToDraw.addColumn('date', 'Date');
chartToDraw.addColumn('number', 'Value');
chartToDraw.addColumn({
type: 'string',
role: 'tooltip',
properties: {
html: true
},
calc: function (dt, row) { //doesn't get called for some reason
var date = dt.getValue(row, 2);
var val = dt.getValue(row, 1);
return '<div>' + date + ' </br><b>value:</b>' + val + '</div>';
}
});
chartToDraw.addColumn('number', 'Previous value');
chartToDraw.addColumn({
type: 'string',
role: 'tooltip',
properties: {
html: true
},
calc: function (dt, row) { //doesn't get called for some reason
var date = dt.getValue(row, 4);
var val = dt.getValue(row, 3);
return '<div>' + date + ' </br><b>value:</b>' + val + '</div>';
}
});
if (chartData['dataPoints'] != undefined) {
var currentDataArr = [];
for (var point in chartData['dataPoints']) {
currentDataArr.push([
chartData['dataPoints'][point].date,
chartData['dataPoints'][point].value,
chartData['dataPoints'][point].date,
chartData['dataPoints'][point].prevValue,
chartData['dataPoints'][point].prevDate
]);
}
}
chartToDraw.addRows(currentDataArr);
var timeFormatter = new google.visualization.DateFormat({
pattern: "MMM dd"
});
timeFormatter.format(chartToDraw, 0);
timeFormatter.format(chartToDraw, 2);
timeFormatter.format(chartToDraw, 4);
var options = {
legend: 'none',
'width': chartWidth,
'height': chartHeight,
pointSize: 4,
colors: ['#0289cb', '#01af8a'],
tooltip: {
isHtml: true
},
chartArea: {
width: '80%'
},
hAxis: {
slantedText: true,
slantedTextAngle: 30,
viewWindow: {
min: startDate,
max: endDate
},
gridlines: {
count: -1,
units: {
days: {format: ['MMM dd']},
hours: {format: ['HH:mm', 'ha']}
}
},
minorGridlines: {
units: {
hours: {format: ['hh:mm:ss a', 'ha']},
minutes: {format: ['HH:mm a Z', ':mm']}
}
}
},
vAxis: {
viewWindow: {
min: 0
}
}
};
var chart = new google.visualization.LineChart(document.getElementById(elemId));
chart.draw(chartToDraw, options);
}
Das Problem ist, dass alles, was ich jetzt auf der Tool- sehen Tipps sind nur die richtigen Daten und mir fehlt der Wert. Ich bin mir nicht sicher, warum die calc
Funktionen nicht aufgerufen werden, wenn ich den Tool-Tip-Typ zu string
ändern, bekomme ich nur einen mismatch type
Fehler.
Hier ist, was ich bei bisher haben gesucht:
Google Chart HTML Tooltip displays html text
aber alle Änderungen i resamble tat gescheitert, diese Antworten. Was mache ich falsch?
danke! das hilft mir sehr, ich vermisse nur das 'prevDate', habe es als weitere Spalte hinzugefügt,' 3, 'nach der' 2, 'in der zweiten Tool-tip hinzugefügt und in' var date = dt.getValue (Zeile, 3); ', aber ich erhalte einen Fehler:' Alle Reihen auf einer gegebenen Achse müssen vom selben Datatype sein, irgendeine Idee, wie man das löst? – FireBrand
Ja, das zweite Date wirft Dinge weg. Wenn Sie zwei Daten in die Daten einbeziehen, müssen Sie zwei Achsen verwenden ... Möchten Sie den vorherigen Wert auf einer zweiten Achse mit dem vorherigen Datum plotten? oder den vorherigen Wert auf der Achse des aktuellen Datums plotten und nur das vorherige Datum in der QuickInfo anzeigen? Wenn Letzteres, fügen Sie vorher Datum in die Datentabelle, nicht als eigene Spalte in der Datenansicht, einfach Verweis in Tooltip ... (siehe bearbeiten) – WhiteHat
Ich muss den vorherigen Wert auf der aktuellen Datum Achse und nur vorherige zeigen Datum auf dem Tool-Tipp, also habe ich die Spalte wie Sie hinzugefügt, ich fügte die Daten so hinzu, wie Sie taten und löschte die "3" aus der Datenansicht und nur die Referenz in der Tooltip, aber ich bekomme den gleichen Fehler wie zuvor – FireBrand