Używam nvd3.js do utworzenia wykresu liniowego, który wyświetla oceny, które wyliczyłem w czasie. Mam więcej informacji dla każdego pojedynczego punktu danych (ocena) i chciałbym, aby każdy punkt danych na wykresie był linkiem do unikalnej strony zawierającej więcej informacji o tym konkretnym punkcie danych.Dodaj unikalne linki do wszystkich punktów danych d3.js na wykresie
Na przykład: Chciałbym móc unoszą się nad pierwszym punktem danych na wykresie (x: 1345457533, y: -0,0126262626263) i kliknij na nią, aby przejść do konkretnej strony (http: // www.example.com/info?id=1), który dostarcza więcej informacji na temat tej oceny lub punktu danych. Każdy punkt danych ma unikalny identyfikator i niepowtarzalny adres URL, do którego chciałbym się połączyć.
Oto kod, który używam do generowania wykresu:
nv.addGraph(function() {
var chart = nv.models.lineChart();
chart.xAxis
.axisLabel('Time')
.tickFormat(d3.format('r'));
chart.yAxis
.axisLabel('Rating')
.tickFormat(d3.format('.2f'));
d3.select('#chart svg')
.datum(data())
.transition().duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
function data() {
var data = [ { x: 1345457533, y: -0.0126262626263 },
{ x: 1345457409, y: 0.0224089635854 },
{ x: 1345457288, y: 0.0270935960591 },
{ x: 1345457168, y: -0.0378151260504 },
{ x: 1345457046, y: -0.115789473684 } ]
return [
{
values: data,
key: "Sample1",
color: "#232066"
}
];
}
HTML:
<div id="chart">
<svg></svg>
</div>
A oto working example.
[Specyfikacja SVG] (http://www.w3.org/TR/SVG/linking.html) opisuje sposób dodawania linków do elementów. Czy możesz podać pełny przykład na jsfiddle? Próbowałem uruchomić twój kod, ale muszę czegoś nie zauważyć. –
@LarsKotthoff tutaj jest [working jsfiddle] (http://jsfiddle.net/66hAj/). –
Dzięki. Rzuciłem okiem na to i niestety nvd3.js nie zapewnia ci niskiego poziomu dostępu, który byłby potrzebny do osiągnięcia tego, co chcesz. Nie można uzyskać elementów punktowych ani wyskakujących okienek. Więc zasadniczo masz 3 możliwości. Możesz zmodyfikować nvd3.js, aby zrobić to, co chcesz. To nie powinno być zbyt trudne. Lub możesz to zrobić w zwykłym d3.js, który da ci dostęp do wszystkiego. Nie powinno to być zbyt trudne. Po trzecie, możesz spróbować ręcznie zidentyfikować elementy po tym, jak nvd3.js wykonał swoją pracę i dodać to, co chcesz. Hacky i najprawdopodobniej trudne, niezalecane. –