Skip to content

Instantly share code, notes, and snippets.

@timaschew
Created July 12, 2011 17:30
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save timaschew/1078486 to your computer and use it in GitHub Desktop.
Save timaschew/1078486 to your computer and use it in GitHub Desktop.
Using library JavaPlot for interactive rotating a Gnuplot in a JPanel
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import com.panayotis.gnuplot.JavaPlot;
import com.panayotis.gnuplot.swing.JPlot;
// include JavaPlot.jar from this site to your classpath
// http://gnujavaplot.sourceforge.net/JavaPlot/About.html
public class InteractiveGnuPlot {
public static void main(String[] args) {
createJPanel();
}
private static void createJPanel() {
JavaPlot javaPlot = new JavaPlot(true);
final JPlot plot = new JPlot(javaPlot);
final JavaPlot p = plot.getJavaPlot();
// 3d function
p.addPlot("sin(x)*y");
plot.plot();
plot.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent e) {
int x = e.getX();
int y = e.getY();
double rotX = (double) x / plot.getWidth() * 360;
double rotY = (double) y / plot.getHeight() * 360;
// range check
if (rotX < 0) {
rotX = 0;
}
if (rotX > 360) {
rotX = 360;
}
if (rotY < 0) {
rotY = 0;
}
if (rotY > 360) {
rotY = 360;
}
// set view
p.set("view", rotY + "," + rotX);
// repaint
plot.plot();
plot.repaint();
}
});
// pack and display frame
JFrame f = new JFrame();
f.getContentPane().add(plot);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
@matsob
Copy link

matsob commented Aug 20, 2012

it doesn't work

@Knoxie
Copy link

Knoxie commented Apr 16, 2013

Yeah, doesn't work still. I also get an error trying to run JPlot's example though.
This spits out:

** Start of error stream **
gnuplot> set title 'test'
gnuplot>
gnuplot> set term png
Terminal type set to 'png'
Options are 'nocrop font arial 12 size 640,480 '
gnuplot>
gnuplot> _gnuplot_error = 1
gnuplot>
gnuplot> splot sin(x) * y title 'sin(x) * y' ; _gnuplot_error = 0
gnuplot>

** End of error stream **
Exception in thread "main" com.panayotis.gnuplot.GNUPlotException: Error while parsing 'plot' arguments.
    at com.panayotis.gnuplot.GNUPlotExec.plot(GNUPlotExec.java:198)
    at com.panayotis.gnuplot.GNUPlot.plot(GNUPlot.java:267)
    at com.panayotis.gnuplot.swing.JPlot.plot(JPlot.java:64)
    at com.entropix.sounderviewer.InteractiveGnuPlot.createJPanel(InteractiveGnuPlot.java:29)
    at com.entropix.sounderviewer.InteractiveGnuPlot.main(InteractiveGnuPlot.java:17)

@trausch2001
Copy link

Its work with ein little Patch for JavaPlot.jar
But the Mouse postition ist on start on MouesOver not correct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment