2010-05-17 11 views
10

Potrzebuję wizualizacji wykresu this kind. Nie wiem jak to nazwać (przy okazji, jeśli wiesz - będę wdzięczny, jeśli mi powiesz). Idealnie byłoby, gdyby elementy wykresu były klikalne (tak, że gdy użytkownik kliknie blok, mogę obsłużyć zdarzenie z określonym identyfikatorem elementu), ale mogę przetrwać nawet bez interakcji. Mogę być w stanie skupić się na konkretnym węźle i układać wszystkie pozostałe, aby wyświetlać je z jego perspektywy. Czy są dostępne jakieś komponenty odpowiednie do tego zadania? Jeśli nie, czego powinienem szukać, aby pomóc mi opracować algorytm do rysowania takiego wykresu z wizualnie wygodnym układem?Jak wizualizować złożony wykres w .Net?

Praktyczny charakter tego wykresu jest dość powszechny: każdy blok reprezentuje pochodzenie od 2 argumentów. Pomarańczowe kółka są odniesieniami do 2 operandów, zielone kółka są punktami połączeń z konsumentami. Może być istotne, aby odróżnić pozycję argumentu (lewą lub prawą), na przykład, jeśli pochodzenie reprezentuje matematyczną operację różnicy lub podziału (w tym konkretnym przypadku blok może być trójkątny, ale w innych przypadkach operand może wykorzystywać bycie świadomym, dla jakich bloków jest lewy operand i dla jakich bloków jest to prawo). Inną popularną aplikacją są przecinające się zbiory ze złożonymi relacjami.

Odpowiedz

6

Możesz rzucić okiem na Graph#, ale nie jestem pewien, jak dobrze będzie obsługiwać węzły kompozytowe w tym stylu. To może być dobry punkt wyjścia.

2

Po pierwsze, musisz go w jakiś sposób przedstawić w pamięci, jest wiele sposobów, na przykład adjacency list. Następnie musisz go narysować. Generalnie rysowanie wykresu jest proste, ale nie jest to proste, jeśli potrzebujesz layout it. Wygląda na to, że w twoim przypadku to jest dokładnie to, co musisz zrobić, aby przyjść do tej miłej reprezentacji. To nie będzie łatwe.

EDIT: Ciekawe, nie wydaje się być library wykonane przez Microsoft Research.

2

nie wiem jak to będzie przydatne w tej konkretnej sytuacji, ale warto przyjrzeć http://quickgraph.codeplex.com/

+0

aktualizacja: http: //quickgraph.codeplex.com/ – bob

+1

@Bob cheers, zaktualizowany URL – ICR

1

nie mogę znaleźć tego komponentu i postanowiłem writen własne sterowanie, linia i głowa i używać ich do wizualizacja mojego wykresu Jeśli potrzebne twojej mogę dać to komponent i program go wykazać/ ja napisany komponent i programu w visual studio 2008 język C#

+0

Dziękuję bardzo, Andriy. Z przyjemnością spróbuję zastosować i/lub przedłużyć (wysyłając moje rozszerzenia z powrotem do ciebie oczywiście) twoje rozwiązanie. Prześlij go na adres [email protected] (przepraszam za straszny adres, jest prawdziwy podczas tymczasowego, po prostu kopiuj go tak, jak jest, niestety nie znalazłem ani prywatnego systemu wiadomości na tej stronie, ani twoich kontaktów w twoim profilu, podczas gdy unikam publikowanie mojego e-maila na publicznych stronach internetowych) – Ivan

2

chciałbym również zwrócić do graphviz. To nie jest rozwiązanie .NET, ale możesz podawać pliki, które są dość łatwe do napisania, aby uzyskać wykresy. Nie wydaje mi się, żeby układanie było bardzo proste, zwłaszcza przy rosnącej liczbie węzłów, więc dobrze byłoby znaleźć jakieś narzędzie do tego.

+0

Istnieje kilka powiązań dla wywoływania graphviz z C#. Wszystkie wyglądają dla mnie trochę eksperymentalnie. –

1

Bardzo dobrze wygląda jedno narzędzie Diagram z Nevron. Ale to jest not for free!

Używam obecnie wykresów i interfejsów użytkownika, które działają całkiem nieźle.

1

dostarcza składnik WPF do wizualizacji wykresów. Zależy od GraphViz (narzędzie do wizualizacji wykresów wiersza poleceń Open Source).

0

wykorzystali ten produkt komercyjny z sukcesu: GoDiagram

To wsparcie wielu portów na węzłach jak masz pokazane.

Powiązane problemy