2009-02-18 13 views
11

ग्राफ के लिए somesuggestions देखा गया, मुझे आश्चर्य है कि मेरी समस्या के लिए इष्टतम क्या है।वेब के लिए अनुकूलित ग्राफ ड्राइंग

मैं एक निर्देशित ग्राफ को एक सर्वलेट/चित्र में ब्राउज़र में प्रदर्शित करना चाहता हूं। स्थिति का कुछ प्रकार का अनुकूलन होना चाहिए। स्विंग के लिए कोई निर्भरता पसंद नहीं की जाएगी। एल्गोरिदम महत्वपूर्ण नहीं हैं, क्योंकि ग्राफ की संरचना व्यावसायिक तर्क द्वारा निर्धारित की जाती है। यह भी किनारों के लिए लेबल जोड़ने में सक्षम होना वांछित होगा। यह इष्टतम होगा अगर मैं इसे पीएनजी/एसवीजी के रूप में सेवा कर सकता हूं।

आप कौन सी लाइब्रेरी/सेवा की सिफारिश करेंगे?

स्पष्टीकरण:

1) प्रश्न रेखांकन के बारे में सब - Directed Acyclic Graph तरह - नहीं - Charts

2) flot, गूगल चार्ट - रेखांकन, केवल चार्ट साजिश नहीं कर सकते, या मैं कुछ छूट गया है?

3) नहीं, मैं अन्तरक्रियाशीलता

4) Graphviz की जरूरत नहीं है अच्छा होगा, लेकिन Grappa जावा पुस्तकालय काफी पुरानी हो चुकी है और स्विंग/AWT पर बनाया गया है। जबकि यह छवियों को स्विंग प्रस्तुत करने के लिए सैद्धांतिक रूप से संभव हो सकता है, यह सर्वर-एप में ऐसा करने का मेरा पसंदीदा तरीका नहीं होगा।

5) ऑनलाइन सेवा का उपयोग करना ठीक होगा जहां छवियों को स्थानीय रूप से होस्ट नहीं किया जाता है।

संपादित करें: जोड़ा विकिपीडिया के लिंक ग्राफ/चार्ट अवधि

उत्तर

3

साथ ही मैजिक फ्रेमवर्क के बारे में सुनने के लिए प्रतीक्षा सप्ताह जो कोड की एक पंक्ति में आपकी सभी समस्याओं को हल करने जा रहे हैं, वैसे ही कुछ कोड लिखने का दूसरा विकल्प भी है जो आप चाहते हैं ... (मैं यह नहीं कह रहा हूँ यह 10 मिनट की काम है, लेकिन यह शायद एक या दो दिन है, और आप अपने प्रश्न सप्ताह दो साल पहले पोस्ट ...)

पर, आप उदाहरण के लिए एक नज़र, हुई है विकिपीडिया प्रवेश के समय Force-based algorithms - इसमें छद्म कोड है और कुछ लिंक उपयोगी हो सकते हैं।

मुझे लगता है कि यह लेआउट एल्गोरिदम है, यह मुद्दा है, और बुफर्ड इमेज बनाने की बात नहीं, ग्राफिक्स संदर्भ में चित्रण, पीएनजी-एन्कोडिंग और इसे सॉकेट नीचे भेजना। आपको वास्तव में के लिए एक फ्रेमवर्क की आवश्यकता नहीं है जो बिट, मुझे नहीं लगता।

+6

वहां गया, ऐसा किया। यदि आप वास्तव में सोचते हैं कि कोई भी मजबूत बल-निर्देशित लेआउट को केवल 2 दिनों में कार्यान्वित कर सकता है, और JViews या yFiles (अकेले एआईसीई) के बराबर कुछ भी दूरस्थ रूप से समाप्त कर सकता है, तो आप एक सपने देखने वाले हैं। यह सिर्फ इसका उपयोग करने के बजाय Google खोज को फिर से कार्यान्वित करने जैसा है। –

+0

तो मेरा अनुमान अधिक है कि किसी को एल्गोरिदम लागू करने के लिए उपयोग किया जाता है, कुछ दिनों में कुछ स्वीकार्य * और "जो कुछ भी वे चाहते हैं" प्राप्त करना चाहिए (पोस्टर का उल्लेख "किसी प्रकार का अनुकूलन" करना है, लेकिन उनके प्रोजेक्ट में एकीकृत करने का मुद्दा भी महत्वपूर्ण था)। –

+0

जिस समाधान का मैं लक्ष्य रख रहा हूं वह प्रीफ्यूज़ के लिए एक रैपर लिखना है जो मेरे सर्वलेट्स में से एक से पीएनजी आउटपुट करता है। मेरे पास एल्गोरिदम लिखने की कोई योजना नहीं है जो मेरे द्वारा प्लानर ग्राफ़ लेआउट करते हैं। –

0

स्पष्ट करने के लिए हो सकता है कि Google Charts देख लिया?

+1

अरे इतना बुरा सुझाव नहीं है: http://code.google.com/apis/chart/docs/gallery/graphviz.html – bergin

8
+0

आप विवरण जोड़ना चाहेंगे जो रनकॉ –

-2

पर एक नजर डालें मैं जमकर सिफारिश कर सकते हैं flot - उत्कृष्ट!

examples here देखें।

3

aiSee आज़माएं। इसका उपयोग data mining, static program analysis, matrix visualization, network analysis, और व्हाट्नॉट के लिए सभी प्रकार के वेब-आधारित अनुप्रयोगों द्वारा किया जाता है। इसका उपयोग कुछ ग्राफिक्स लेआउट बैकएंड के रूप में MediaWikis द्वारा भी किया जाता है।

उनके पास AiSee.com पर sample graphs का विशाल डेटाबेस है। इसकी जांच - पड़ताल करें। यह किनारे के लेबल का समर्थन करता है, मैप किए गए एसवीजी और एचटीएमएल में निर्यात करता है, और स्विंग पर निर्भर नहीं है।

-2

JFreeChart जिस तरह से आप जाना चाहते हैं, हो सकता है, लेकिन आप चार्ट और ग्राफ के बीच अंतर बनाते हैं। शायद आप समझ सकते हैं कि इसका मतलब क्या है। मैंने आमतौर पर इन शब्दों को समानार्थी रूप से उपयोग किया है। :)

जेएफरी चार्ट में अच्छी स्कैटर, बार और लाइन ग्राफ़ के साथ ही पाई और डायल जैसे मजेदार लोग हैं, इसलिए शायद यह आपके लिए काम करेगा।

+0

ग्राफ़/चार्ट अंतर –

+0

को स्पष्ट करने के लिए प्रश्न के अतिरिक्त लिंक प्रदान करता है। खैर, एआईसी, रेगडवाइट द्वारा सुझाया गया एक अच्छा विकल्प लगता है, हालांकि, यह मालिकाना दिखता है। सुनिश्चित नहीं है कि यह आपकी स्थिति के साथ कोशेर है या नहीं। – Drew

5

ग्राफविज़ के डॉट घटक के बारे में कैसे? यह ग्राफ (चार्ट नहीं) बनाता है, पीएनजी और एसवीजी को आउटपुट करता है, और लेबलिंग किनारों का समर्थन करता है। आप जिस छवि को चाहते हैं उसे उत्पन्न करने के लिए आप डॉट पर आउट हो सकते हैं, और एक आईएमजी टैग वापस कर सकते हैं जो संदर्भ देता है। वैकल्पिक रूप से, आप एक आईएमजी टैग वापस कर सकते हैं जो एक यूआरएल का संदर्भ देता है जो अपेक्षित ग्राफ उत्पन्न करेगा (या कैश की गई प्रतिलिपि पुनर्प्राप्त करेगा)।यहाँ डॉट सूचना यह है:

http://www.graphviz.org/pdf/dotguide.pdf

तुम भी WebDot, जो जाहिरा तौर पर इस उद्देश्य के लिए बनाया गया है पर एक नज़र हो सकता है:

http://www.graphviz.org/webdot/

0

आप बाटिक के साथ संयोजन में एसवीजी का उपयोग कर सकते हैं। मैंने ग्राफिक्स को प्रदर्शित करने के लिए कई बार इसका इस्तेमाल किया है। जावा 1.5 के साथ Batik बहुत तेज है। इस समाधान के साथ आप स्विंग पर निर्भरता के बिना जावा में अपने ग्राफ को प्रोग्राम कर सकते हैं। आप जहां चाहें लेबल जोड़ सकते हैं, इसे सर्वलेट के रूप में होस्ट करें और इसे पीएनजी या एसवीजी के रूप में प्रदर्शित करें।

आप एसवीजी में ग्राफ बना सकते हैं (यह एक एक्सएमएल दस्तावेज़ है)।
एसवीजी-दस्तावेज़ को पीएनजी/जेपीजी छवि में बदलने के लिए आप Batik का उपयोग करते हैं।
आप इस छवि को ब्राउज़र पर वापस स्ट्रीम करने के लिए एक सर्वलेट का उपयोग कर सकते हैं।

जावा में आप एक एसवीजी (= एक्सएमएल) दस्तावेज़ बनाते हैं। एसवीजी रेखांकन के लिए नमूने यहां पाया जा सकता है: Directed graph और यहाँ: Simple directed graph

+0

पहला नमूना ग्राफवीज़ के साथ पकड़ा गया है। इंकस्केप वाला दूसरा वाला। क्या आपके पास बैटिक को प्रतिपादन के लिए कॉल करने से पहले जावा ग्राफ़ लेआउट के लिए कोई सलाह है? – dolmen

+0

लेआउट कैसे बनाया गया है इस पर निर्भर करता है कि आप किस प्रकार का ग्राफ बनाना चाहते हैं। मेरे ग्राफ जहां बहुत संरचित और एक्स, वाई निर्देशांक के साथ एक ग्रिड का उपयोग करके गणना की जा सकती है। मैंने एडनोड और कनेक्ट नोड्स के लिए विधियां बनाई हैं, जिन्होंने कुछ गणना की है। – Edwin

0

this question देखें, विशेष रूप से स्टीफन के प्रीफ्यूज के बारे में उत्तर। मैंने पढ़ा है कि आपको अंतःक्रियाशीलता की आवश्यकता नहीं है, लेकिन फिर भी उपसर्ग उपयोगी हो सकता है।

1

JPGD जावा में एक ग्राफविज़ पार्सर है। यह छोटा छोड़ दिया गया है, लेकिन कोड अच्छा और स्पष्ट है, और यदि आपको बग मिलती हैं तो मुझे यकीन है कि लेखक योगदान फिक्स स्वीकार करेंगे।

हालांकि एक पार्सर के रूप में विज्ञापित, यह भी जनरेटर है। आप ग्राफ को नोड और एज ऑब्जेक्ट्स के संग्रह के रूप में बना सकते हैं, फिर Graph.toString() का उपयोग करके .dot प्राप्त करें। ग्राफ़िक के रूप में इसे प्राप्त करना ग्राफ़विज़ डॉट निष्पादन योग्य के लिए एक साधारण खोल होगा।

वैकल्पिक रूप से, डॉट स्वयं को उत्पन्न करना बहुत आसान है। सामान्य स्थिति में, यह एक गमले में लगे हैडर

digraph myGraph { 

लेखन का मामला है ... किनारे

node1 -> node2 ; 

प्रति एक किनारे परिभाषा के बाद ... एक बंद ब्रेस के बाद

} 
1

इसलिए मैंने सभी दिए गए उत्तरों और लिंक पर ध्यान दिया, ऐसा लगता है कि Prefuse/Flare इष्टतम विकल्प से होगा। उनके पास बहुत आकर्षक दृश्यताएं हैं, साथ ही उन्होंने ग्राफ के लिए समर्थन में बनाया है।

3

सर्वरसाइड के लिए, JUNG आज़माएं, आप इसे Batik के विरुद्ध चला सकते हैं और सुंदर एसवीजी या पीएनजी फ़ाइलों का उत्पादन कर सकते हैं। जंग के बाद से आप का उल्लेख है कि रेखांकन प्रस्तुत करना webdot कहा जाता है, Graphviz एक सेवा प्रदान "यह एक ऑनलाइन सेवा उपयोग करने के लिए ठीक होगा", इसके अलावा एक अच्छा डिजाइन और बहुत शक्तिशाली लेआउट एल्गोरिदम है ...

इस लाइन के साथ अन्य भी हैं ... उदा।

  • एक न्यूनतम (ish) पुस्तकालय के लिए http://arborjs.org/ प्रयास करें यह लेआउट के लिए समर्पित है, का उपयोग इस आप अपने खुद के प्रतिपादन दिनचर्या पसंद करते हैं चाहते है (: http://graph.gafol.net/

    क्लाइंट साइड (बंद हो गया है) div, कैनवास, svg, paper.js, प्रसंस्करण ... आदि)।

  • मैं भी एक और अधिक पूरा दृष्टिकोण के लिए http://sigmajs.org/ पसंद है, स्पर्श समर्थन, प्लगइन फ़ाइल स्वरूपों में निर्माण, आदि

2

दिलचस्प है, ग्रहण परियोजना एक SWT/JFace घटक/ढांचे प्रदर्शित करने में सक्षम है और सृजन (आयात/निर्यात) Graphviz की 'डॉट' प्रारूप, शुद्ध जावा में:

ZEST (home page & download links)

उपयोग के उदाहरणों के http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest देखें।

हालांकि ज़ेस्ट को ग्रहण प्लगइन के रूप में बताया गया है, ऐसा लगता है कि डीओटी-मैनिपुलेशन एपीआई का एक ग्रहण स्थापना के लिए स्टैंडअलोन और बाहरी का उपयोग किया जा सकता है।

चीयर्स

रिच

2

आप sigma.js कोशिश कर सकते हैं: http://sigmajs.org/

यह एक हल्के, खुला स्रोत जावास्क्रिप्ट में वेब पर बड़े रेखांकन प्रदर्शित करने के लिए पुस्तकालय है।

+0

वास्तव में महान पुस्तकालय, धन्यवाद – Kerb

3

हम ऐसी आवश्यकताओं के लिए mxGraph बनाते हैं। हमने वास्तव में इसे 2006 में रिलीज़ किया था, लेकिन इस सवाल को ध्यान में रखते हुए कुछ समय लगा ...

संबंधित मुद्दे