2010-07-07 13 views
5

मुझे यकीन नहीं है कि यह संभव है, खासकर जब जावा एक वीएम के माध्यम से चलता है, लेकिन क्या मैं जावा के भीतर से gnuplot को कॉल कर सकता हूं? शायद मैं जावा टर्मिनल खोल सकता हूं और इनपुटजावा से gnuplot कॉलिंग? (ubuntu)

gnuplot 
plot ... 

आदि?

उत्तर

20

उपयोग gnujavaplot

+0

बिल्कुल सही! धन्यवाद। – rhombidodecahedron

+1

जब मैंने यह जवाब देखा तो मैंने बस लॉल किया। :) –

+2

प्रोजेक्ट निष्क्रिय है –

3

आप कमांड लाइन या मानक इनपुट से सभी इनपुट लेने के (या एक फ़ाइल से इसे पढ़ने) और फ़ाइलों के लिए इसके उत्पादन के साथ-साथ लिखने के लिए gnuplot प्राप्त कर सकते हैं, तो ProcessBuilder का उपयोग कर ऐसा करने में कोई समस्या नहीं होनी चाहिए।

+0

मैं कुछ इसी तरह की एक समय पहले किया था। मैं विवरण पर आलसी हूं, लेकिन मैं पुष्टि कर सकता हूं कि ग्नुपलॉट फाइलों से अपने सभी इनपुट को स्लर्प करने में खुश है। यह बहुत पटकथा है। –

0

आप "कार्यकारी" कमांड का प्रयोग किसी भी बाहरी एप्लिकेशन लॉन्च कर सकते हैं।

http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

कुछ उदाहरण के लिए इस पृष्ठ देखें। http://www.rgagnon.com/javadetails/java-0014.html

संपादित करें: मैं प्रोसेसबिल्डर के बारे में भूल गया। माइकल बोर्गवर्ड का जवाब एक और मजबूत समाधान है।

1

यह डेबियन पर काम करता है:

String[] s = {"/usr/bin/gnuplot", 
       "-e", 
       "set term jpeg large size 800,600;set autoscale; set grid;set format y \"%0.f\";set output \"plot.jpg\";set xdata time;set timefmt \"%Y-%m-%d-%H:%M:%S\";set xlabel \"Dates\";set ylabel \"Data transferred (bytes)\";plot \""+x+"\" using 1:2 title \"Total:"+tot+"\" with linespoints;" 
      }; 
try { 
    Runtime rt = Runtime.getRuntime(); 
    Process proc = rt.exec(s); 
    InputStream stdin = proc.getErrorStream(); 
    InputStreamReader isr = new InputStreamReader(stdin); 
    BufferedReader br = new BufferedReader(isr); 
    String line = null; 
    while ((line = br.readLine()) != null) 
     System.err.println("gnuplot:"+line); 
    int exitVal = proc.waitFor(); 
    if (exitVal != 0) 
     log("gnuplot Process exitValue: " + exitVal); 
    proc.getInputStream().close(); 
    proc.getOutputStream().close(); 
    proc.getErrorStream().close(); 
} catch (Exception e) { 
    System.err.println("Fail: " + e); 
} 
1

उपयोग JavaGnuplotHybrid पुस्तकालय।

यह बहुत हल्का वजन (केवल 3 कोर वर्ग) है और जावा और ग्नुपलॉट के साथ हाइब्रिड प्रोग्रामिंग को सक्षम बनाता है। जावा और gnuplot

  • बहुत हल्के वजन के साथ

    1. हाइब्रिड प्रोग्रामिंग (सिर्फ तीन मुख्य वर्गों) कार्य निष्पादित या जावा में फ़ील्ड 'मूल्यों पाने के लिए gnuplot कोड में
    2. टैग का उपयोग करें।
    3. समर्थन दोनों सिंक्रनाइज़ और जावा में gnuplot के संचालन asynchronized। (सिंक्रनाइज़: जब तक आप बंद पॉप gnuplot खिड़की अपने जावा कार्यक्रम इंतजार करेंगे; asynchronized: आप जावा कार्यक्रम नहीं होगा इंतजार।)
    4. कब्जा त्रुटि/जावा टर्मिनल के लिए gnuplot के सामान्य पाठ उत्पादन
    5. पढ़ें gnuplot कोड से एक्सएमएल फाइलें
    6. समर्थन Gnuplot कोड टेम्पलेट।

    अधिक जानकारी के लिए:

    1. परियोजना पेज: https://github.com/mleoking/JavaGnuplotHybrid
    2. उदाहरण: https://github.com/mleoking/JavaGnuplotHybrid/blob/master/javagnuplothybrid/doc/examples.md
  • +1

    क्या इसमें एक मैवेन रिपोजिटरी है? मैं अपनी परियोजना में एक जार नहीं डालूंगा। – ahll