Mercurial > hg > jslab
view src/samer/tools/ScatterPlot.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
line wrap: on
line source
/* * Copyright (c) 2001, Samer Abdallah, King's College London. * All rights reserved. * * This software is provided AS iS and WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ package samer.tools; import samer.core.*; import samer.core.types.*; import samer.core.util.*; //import samer.maths.*; import java.util.*; import java.awt.*; /** Builds up a 2D joint histogram of 2 elements of a vector. */ public class ScatterPlot extends Plotter implements Observer { public VDouble alpha, fade,marksz; Pen pen; Color fader; public ScatterPlot() { exposeMaps(); alpha=new VDouble("alpha",0.1); fade=new VDouble("fade",0.02); marksz=new VDouble("blob",2); marksz.addObserver(this); fade.addObserver(this); alpha.addObserver(this); fader=VColor.withAlpha(getBackground(),fade.value); setForeground(VColor.withAlpha(getForeground(),alpha.value)); } public void update(Graphics g) { Shell.print("update"); } public void paint(Graphics g) { Shell.print("paint"); g.setColor(VColor.withAlpha(getForeground(),255)); g.fillRect(0,0,width,height); } public void dispose() { alpha.dispose(); fade.dispose(); marksz.dispose(); // super.dispose(); } public void plot(double x, double y) { pen.abs(x,y).marker(); } public void fade() { graphics.setColor(fader); graphics.fillRect(0,0,width,height); graphics.setColor(getForeground()); } protected void sized() { super.sized(); Graphics2D g2=(Graphics2D)graphics; g2.setComposite(AlphaComposite.SrcOver); g2.setPaint(getForeground()); pen=getPen(g2); pen.setMarkerSize((int)marksz.value); } public void update(Observable o, Object a) { if (o==marksz) pen.setMarkerSize((int)marksz.value); else if (o==fade) fader=VColor.withAlpha(getBackground(),fade.value); else if (o==alpha) { setForeground(VColor.withAlpha(getForeground(),alpha.value)); } } /* public Task vecTask(final Vec v, final int _i, final int _j) { return new AnonymousTask() { int i=_i, j=_j; double [] x=v.array(); public void run() { plot(x[i],x[j]); } }; } */ }