Last active
November 11, 2018 11:00
-
-
Save elbosso/b34fb2c14286d725aa43af5dedca4158 to your computer and use it in GitHub Desktop.
Wrapper around https://mvnrepository.com/artifact/com.panayotis.javaplot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Juergen Key. Alle Rechte vorbehalten. | |
Weiterverbreitung und Verwendung in nichtkompilierter oder kompilierter Form, | |
mit oder ohne Veraenderung, sind unter den folgenden Bedingungen zulaessig: | |
1. Weiterverbreitete nichtkompilierte Exemplare muessen das obige Copyright, | |
die Liste der Bedingungen und den folgenden Haftungsausschluss im Quelltext | |
enthalten. | |
2. Weiterverbreitete kompilierte Exemplare muessen das obige Copyright, | |
die Liste der Bedingungen und den folgenden Haftungsausschluss in der | |
Dokumentation und/oder anderen Materialien, die mit dem Exemplar verbreitet | |
werden, enthalten. | |
3. Weder der Name des Autors noch die Namen der Beitragsleistenden | |
duerfen zum Kennzeichnen oder Bewerben von Produkten, die von dieser Software | |
abgeleitet wurden, ohne spezielle vorherige schriftliche Genehmigung verwendet | |
werden. | |
DIESE SOFTWARE WIRD VOM AUTOR UND DEN BEITRAGSLEISTENDEN OHNE | |
JEGLICHE SPEZIELLE ODER IMPLIZIERTE GARANTIEN ZUR VERFUEGUNG GESTELLT, DIE | |
UNTER ANDEREM EINSCHLIESSEN: DIE IMPLIZIERTE GARANTIE DER VERWENDBARKEIT DER | |
SOFTWARE FUER EINEN BESTIMMTEN ZWECK. AUF KEINEN FALL IST DER AUTOR | |
ODER DIE BEITRAGSLEISTENDEN FUER IRGENDWELCHE DIREKTEN, INDIREKTEN, | |
ZUFAELLIGEN, SPEZIELLEN, BEISPIELHAFTEN ODER FOLGENDEN SCHAEDEN (UNTER ANDEREM | |
VERSCHAFFEN VON ERSATZGUETERN ODER -DIENSTLEISTUNGEN; EINSCHRAENKUNG DER | |
NUTZUNGSFAEHIGKEIT; VERLUST VON NUTZUNGSFAEHIGKEIT; DATEN; PROFIT ODER | |
GESCHAEFTSUNTERBRECHUNG), WIE AUCH IMMER VERURSACHT UND UNTER WELCHER | |
VERPFLICHTUNG AUCH IMMER, OB IN VERTRAG, STRIKTER VERPFLICHTUNG ODER | |
UNERLAUBTE HANDLUNG (INKLUSIVE FAHRLAESSIGKEIT) VERANTWORTLICH, AUF WELCHEM | |
WEG SIE AUCH IMMER DURCH DIE BENUTZUNG DIESER SOFTWARE ENTSTANDEN SIND, SOGAR, | |
WENN SIE AUF DIE MOEGLICHKEIT EINES SOLCHEN SCHADENS HINGEWIESEN WORDEN SIND. | |
*/ | |
import javax.swing.*; | |
import java.awt.*; | |
public class GnuPlotPanel extends javax.swing.JPanel implements java.awt.event.ComponentListener | |
{ | |
private static final java.awt.Dimension DEFAULTPREFERREDSIZE=new java.awt.Dimension(800,600); | |
private com.panayotis.gnuplot.terminal.ExpandableTerminal terminal; | |
private com.panayotis.gnuplot.JavaPlot p; | |
private java.util.Map<java.lang.String,com.panayotis.gnuplot.plot.AbstractPlot> titledPlots; | |
public GnuPlotPanel() | |
{ | |
super(new java.awt.BorderLayout()); | |
titledPlots=new java.util.HashMap(); | |
p = new com.panayotis.gnuplot.JavaPlot(false); | |
com.panayotis.gnuplot.swing.JPlot jPlot=new com.panayotis.gnuplot.swing.JPlot(p); | |
p=jPlot.getJavaPlot(); | |
terminal=(com.panayotis.gnuplot.terminal.ExpandableTerminal)p.getTerminal(); | |
setPreferredSize(DEFAULTPREFERREDSIZE); | |
terminal.set("enhanced"); | |
terminal.set("font","\"Noto Serif,14\""); | |
jPlot.addComponentListener(this); | |
add(jPlot); | |
} | |
public GnuPlotPanel(int rows, int columns) | |
{ | |
super(new java.awt.BorderLayout()); | |
titledPlots=new java.util.HashMap(); | |
p = new com.panayotis.gnuplot.JavaPlot(false); | |
com.panayotis.gnuplot.swing.JPlot jPlot=new com.panayotis.gnuplot.swing.JPlot(p); | |
p=jPlot.getJavaPlot(); | |
p.set("lmargin","10"); | |
com.panayotis.gnuplot.layout.AutoGraphLayout gl=new com.panayotis.gnuplot.layout.AutoGraphLayout(); | |
gl.setColumns(columns); | |
gl.setRows(rows); | |
p.getParameters().getPage().setLayout(gl); | |
terminal=(com.panayotis.gnuplot.terminal.ExpandableTerminal)p.getTerminal(); | |
setPreferredSize(DEFAULTPREFERREDSIZE); | |
terminal.set("enhanced"); | |
terminal.set("font","\"Noto Serif,14\""); | |
jPlot.addComponentListener(this); | |
add(jPlot); | |
} | |
@Override | |
public void setPreferredSize(Dimension preferredSize) | |
{ | |
terminal.set("size",preferredSize.width+","+preferredSize.height); | |
super.setPreferredSize(preferredSize); | |
update(); | |
} | |
public void newGraph() | |
{ | |
p.newGraph(); | |
} | |
public void display(com.panayotis.gnuplot.dataset.DataSet dataset) | |
{ | |
com.panayotis.gnuplot.style.PlotStyle style = new com.panayotis.gnuplot.style.PlotStyle(); | |
style.setStyle(com.panayotis.gnuplot.style.Style.POINTS); | |
display(dataset,null,style); | |
} | |
public void display(com.panayotis.gnuplot.dataset.DataSet dataset,java.lang.String title) | |
{ | |
com.panayotis.gnuplot.style.PlotStyle style = new com.panayotis.gnuplot.style.PlotStyle(); | |
style.setStyle(com.panayotis.gnuplot.style.Style.POINTS); | |
display(dataset,title,style); | |
} | |
public void display(com.panayotis.gnuplot.dataset.DataSet dataset,java.lang.String title,com.panayotis.gnuplot.style.PlotStyle style) | |
{ | |
com.panayotis.gnuplot.plot.DataSetPlot s = new com.panayotis.gnuplot.plot.DataSetPlot(dataset); | |
if(title!=null) | |
{ | |
titledPlots.put(title,s); | |
s.set("title", "\"" + title + "\""); | |
} | |
if(style!=null) | |
s.setPlotStyle(style); | |
p.addPlot(s); | |
update(); | |
} | |
public void setGrid(boolean x, boolean y) | |
{ | |
if((x)||(y)) | |
{ | |
p.set("grid",(x?"xtics ":"")+(y?"ytics ":"")+"lc rgb \"#bbbbbb\" lw 1 lt 0"); | |
} | |
else | |
{ | |
p.set("grid",null); | |
} | |
} | |
public void display(javax.swing.table.TableModel model,int xIndex,int yIndex,boolean filterNulls) | |
{ | |
display(model,xIndex,yIndex,filterNulls,null,null); | |
} | |
public void display(javax.swing.table.TableModel model,int xIndex,int yIndex,boolean filterNulls,java.lang.String title) | |
{ | |
display(model,xIndex,yIndex,filterNulls,title,null); | |
} | |
public void display(javax.swing.table.TableModel model,int xIndex,int yIndex,boolean filterNulls,java.lang.String title,com.panayotis.gnuplot.style.PlotStyle style) | |
{ | |
if((java.lang.Number.class.isAssignableFrom(model.getColumnClass(xIndex)))&& | |
(java.lang.Number.class.isAssignableFrom(model.getColumnClass(xIndex)))) | |
{ | |
Point2DDataset dataset = new Point2DDataset(); | |
for(int i=0;i<model.getRowCount();++i) | |
{ | |
java.lang.Number x = (java.lang.Number)model.getValueAt(i,xIndex); | |
java.lang.Number y = (java.lang.Number)model.getValueAt(i,yIndex); | |
if(filterNulls==false) | |
{ | |
if (x == null) | |
x = Double.NaN; | |
if (y == null) | |
y = Double.NaN; | |
} | |
if((x!=null)&&(y!=null)) | |
dataset.add(x.doubleValue(),y.doubleValue()); | |
} | |
display(dataset,title,style); | |
} | |
} | |
public void setPlotTitle(java.lang.String formerPlotTitle,java.lang.String newPlotTitle) | |
{ | |
if((titledPlots.containsKey(formerPlotTitle))&&(newPlotTitle!=null)) | |
{ | |
com.panayotis.gnuplot.plot.AbstractPlot plot=titledPlots.get(formerPlotTitle); | |
titledPlots.remove(formerPlotTitle); | |
titledPlots.put(newPlotTitle,plot); | |
plot.setTitle(newPlotTitle); | |
update(); | |
} | |
} | |
public void setPlotStyle(java.lang.String plotTitle,com.panayotis.gnuplot.style.PlotStyle style) | |
{ | |
if(titledPlots.containsKey(plotTitle)) | |
{ | |
com.panayotis.gnuplot.plot.AbstractPlot plot=titledPlots.get(plotTitle); | |
plot.setPlotStyle(style); | |
update(); | |
} | |
} | |
private void update() | |
{ | |
if(p.getPlots().isEmpty()==false) | |
{ | |
p.plot(); | |
repaint(); | |
} | |
} | |
public void setAxisContraints(java.lang.String axisName,de.netsysit.util.lang.MiniMax miniMax) | |
{ | |
if(miniMax!=null) | |
p.getAxis(axisName).setBoundaries(miniMax.getMin(),miniMax.getMax()); | |
else | |
p.getAxis(axisName).unset(p.getAxis(axisName).getName()+"range"); | |
update(); | |
} | |
public void setAxisContraints(java.awt.geom.Rectangle2D bounds) | |
{ | |
setXAxisContraints(new de.netsysit.util.lang.MiniMax(bounds.getMinX(),bounds.getMaxX())); | |
setYAxisContraints(new de.netsysit.util.lang.MiniMax(bounds.getMinY(),bounds.getMaxY())); | |
} | |
public void setXAxisContraints(de.netsysit.util.lang.MiniMax miniMax) | |
{ | |
setAxisContraints("x",miniMax); | |
} | |
public void setYAxisContraints(de.netsysit.util.lang.MiniMax miniMax) | |
{ | |
setAxisContraints("y",miniMax); | |
} | |
public void setXAxisLabel(java.lang.String label,java.awt.Font font) | |
{ | |
if(label!=null) | |
{ | |
if(font==null) | |
p.getAxis("x").setLabel(label); | |
else | |
p.getAxis("x").setLabel(label,font.getFontName(),font.getSize()); | |
update(); | |
} | |
} | |
public void setYAxisLabel(java.lang.String label,java.awt.Font font) | |
{ | |
if(label!=null) | |
{ | |
if(font==null) | |
p.getAxis("y").setLabel(label); | |
else | |
p.getAxis("y").setLabel(label,font.getFontName(),font.getSize()); | |
update(); | |
} | |
} | |
@Override | |
public void componentResized(java.awt.event.ComponentEvent e) | |
{ | |
update(e); | |
} | |
@Override | |
public void componentMoved(java.awt.event.ComponentEvent e) | |
{ | |
// ((com.panayotis.gnuplot.swing.JPlot)e.getComponent()).plot(); | |
} | |
@Override | |
public void componentShown(java.awt.event.ComponentEvent e) | |
{ | |
update(e); | |
} | |
@Override | |
public void componentHidden(java.awt.event.ComponentEvent e) | |
{ | |
} | |
private void update(java.awt.event.ComponentEvent e) | |
{ | |
terminal.set("size",e.getComponent().getWidth()+","+e.getComponent().getHeight()); | |
update(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment