Ich verwende d3, um ein vereinfachtes Gantt-Diagramm zu rendern, mit Schwenken und Zoomen mit d3.behavior.zoom.
Die x-Skala ist eine Zeitskala (leicht modifiziert, um Kalendertage in Spalten zu zentrieren, usw.) und funktioniert wunderbar, aber ich habe Probleme zu entscheiden, wie man die y-Skala zoomt / schwenkt, deren Domäne eine Liste von Aufgaben ist ist oft zu viel, um in den Chartbereich zu passen, also muss man panning / zoomen.
Gibt es eine Möglichkeit, der Standard-Ordinalskala mitzuteilen, dass sie auf Zoom- / Schwenkereignisse reagiert, oder sollte ich eine benutzerdefinierte Skalierung schreiben? Und wenn ich eine benutzerdefinierte Skala schreiben müsste, wäre es besser, sie auf d3.scale.ordinal (die gesamte Liste der Aufgaben zu speichern und nur die sichtbare Teilmenge als ihre Domäne zu verwenden) oder auf d3.scale zu basieren. linear (und dann etwas Ähnliches wie die Ordinalskala für Entfernungsbänder usw. implementieren?).
Oder gibt es etwas, das mir fehlt (ganz wahrscheinlich, da es mein erstes Projekt ist, das d3 verwendet)?
Etwas von meiner vorherigen Antwort erweitert, da ich privat kontaktiert wurde, um zu erklären, wie ich das gemacht habe.
Zuerst ein Screenshot der betreffenden App, in dem der Job aggregiert und Planungsdaten anzeigt, die aus verschiedenen Quellen (PowerPoint-Dateien, Unternehmensdatenbanken usw.) stammen.
Das relevante Bit ist die rechte vertikale Achse mit den farbigen Punkten, wobei jeder Punkt den Aufwand und die involvierte Organisation eines Projekts darstellt. Der graue Bereich auf der Achse ist ein d3.js-Pinsel und kann verschoben / skaliert werden, um die Diagramm- / Tabellendaten in Echtzeit zu ändern.
%Vor%Was innerhalb des Handlers passiert, ist ziemlich einfach:
Ich hoffe, das macht es klar.
Es ist nicht so schwer, ich musste: