Czy możliwe jest posiadanie etykiet krawędzi na wykresie przy użyciu d3? Przyjrzałem się przykładom i niektórym dokumentom i widzę, gdzie możliwe jest etykietowanie węzłów, ale etykietowanie krawędzi nie jest nigdzie wyraźnie wymienione (co mogę znaleźć).Czy możliwe jest oznaczanie krawędzi D3?
Odpowiedz
Po innych ludzi przykładów I
- dodaj
path
wzdłuż każdej krawędzi, - dodać
text
do krawędzi - BIND tekst do
textpath
który odwołuje ścieżkę wzdłuż krawędzi
Ten przykład wykorzystuje e powyżej pomysłów: http://bl.ocks.org/jhb/5955887
Krótka odpowiedź brzmi "tak", ale nie ma wyraźnego poparcia dla niej. Musisz samodzielnie określić pozycję etykiety. Jednym ze sposobów takiego działania byłoby dołączenie etykiety do węzła początkowego i przetłumaczenie jej o połowę odległości do węzła docelowego oraz przesunięcie, aby zapobiec nakładaniu się linii. Dla bardziej skomplikowanych krawędzi (na przykład krzywych) byłoby to trudniejsze.
http://bl.ocks.org/2926502 jest przykładem tego podejścia, z etykietą przy każdym końcu każdego linku. Pozycje etykiet są przeliczane na każdym tiku. – donaldh
Próbowałem tekstu na opcji ścieżki, ale jest on dość zaangażowany i nie spowodował wyglądu, jaki chciałem. Niestety, nie sprawdziłem tego w lokalnym repozytorium git. To pochodzi z mojej historii Eclipse (dzięki deweloperom Eclipse). Będziesz musiał zmienić ten fragment kodu na swoją własną strukturę danych, ale mam nadzieję, że to pomoże. W szczególności zwróć uwagę na dodanie wartości id
do selekcji lines
, a następnie ponowne jej użycie w selekcji procentów za pomocą atrybutu xlink:href
. Ponadto dodałem tspan
w textpath
, aby przesunąć tekst o kilka pikseli, aby pojawił się nad ścieżką zamiast na nim.
function drawLines(links) {
var diagonal = d3.svg.diagonal();
var format = d3.format(".1%");
var linkKey = function(l) {return l.target.key; };
var lines = linesGroup.selectAll("path").data(links, linkKey);
lines.enter()
.append("path")
.on("mouseover", select)
.on("mouseout", unselect)
.attr("d", diagonal)
.attr("id", function (l) { return "interaction-path-target-" + l.target.key; })
.style("stroke-width", 0.000001);
lines.exit()
.transition().duration(500)
.style("stroke-width", 0.000001)
.remove();
lines.transition()
.delay(function(d, i) { return i * 100; })
.duration(500)
.style("stroke-width", function(d) { return d.weight == 0 ? 0.000001 : d.weight/1000; })
.attr("d", diagonal);
var percentages = linesGroup.selectAll("text").data(links, linkKey);
percentages.enter()
.append("text")
.attr("opacity", 1)
.append("svg:textPath")
.attr("startOffset", "70%")
.attr("xlink:href",
function(l) {
return "#interaction-path-target-" + l.target.key;
})
.append("svg:tspan")
.attr("dy", 3)
.attr("class", "percentageText")
percentages.exit()
.transition().duration(500)
.attr("opacity", 0)
.remove();
percentages
.transition()
.delay(function(d, i) { return i * 100; })
.duration(500)
.attr("opacity", 1);
percentages.select(".percentageText").text(function(d) {
var newvalue = d.weight ?
d.incomming ? percentageIn(d.weight) : percentageOut(d.weight) : 0;
return format(newvalue);
});
}
- 1. "Nie można odtworzyć" - czy możliwe jest wielowymiarowe oznaczanie Java?
- 2. Github zatwierdzić oznaczanie wiadomości
- 3. uniknąć kolizji między węzłami i krawędzi w D3 układ sił
- 4. Uzyskiwanie strzałek do punktu na zewnętrznej krawędzi węzła w D3
- 5. Czy możliwe jest parowanie mark i space za pomocą boost.asio?
- 6. UIView drawRect: czy możliwe jest uderzenie w ścieżkę?
- 7. D3.js - Czy jest możliwe animowanie pomiędzy wykresem wymuszonym a drzewem węzłów?
- 8. D3: Czy możliwe jest powiększanie + przesuwanie jednej osi i przesuwanie tylko drugiej?
- 9. git: Automatyczne oznaczanie wydań
- 10. Oznaczanie szyn i lista tagów
- 11. układ d3 jest niezdefiniowana
- 12. Gdzie jest d3.svg.diagonal()?
- 13. Czy możliwe jest wdrożenie nowych standardów, takich jak HTML5 w formularzach sieci Web ASP.NET?
- 14. Oznaczanie Cythona jako zależności budowania?
- 15. Czy jest możliwe dynamiczne tworzenie UITextView?
- 16. Czy możliwe jest zastrzyki przez dynamiczny LINQ?
- 17. Czy w JavaScript jest możliwe metaprogramowanie?
- 18. Czy jest możliwe prekompilowanie jsp do zaćmienia?
- 19. nodejs (express) czy możliwe jest stosowanie kwerendy?
- 20. Czy przetwarzanie/analiza obrazu NodeJS jest możliwe?
- 21. Czy jest możliwe łączenie połączeń HTTP?
- 22. Czy możliwe jest leniwy załadowanie adnotacji @Formula?
- 23. ExpandableListView - Czy możliwe jest rozszerzenie warunkowe?
- 24. Czy jest możliwe użycie "number_to_currency" w kontrolerze?
- 25. Czy jest możliwe ustawienie textLabel komórki niestandardowej?
- 26. Czy możliwe jest użycie std :: iter :: FlatMap.clone()?
- 27. Czy możliwe jest mieszanie dodatków z matplotlib?
- 28. czy możliwe jest przeciążenie ostatecznej metody?
- 29. Czy możliwe jest automatyzowanie konsoli Firebug?
- 30. matplotlib: czy możliwe jest zmienianie koloru tła?
Zakładam, że masz na myśli etykietowanie w taki sposób, że tekst podąża ścieżką wykresu. Jeśli tak, to wydaje się, że SVG ma funkcję [tekst na ścieżce] (http://www.w3.org/TR/SVG/text.html#TextOnAPath) w specyfikacji, ale nigdy jej nie wypróbowałem, więc nie pewnie, jak łatwo jest. – meetamit