Plot.getProcessor() vs. profile plot preferences

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Plot.getProcessor() vs. profile plot preferences

Pål Baggethun
Plot.getprocessor() returns an ImageProcessor that has different dimensions from those defined in the profile plot preferences pp.with and pp.height. Is this intentional?

The test plugin below writes the following to my log:

Plot ImageProcessor:
    getWith()=478
    getHeight()=455
Plot Options:
    pp.width=400
    pp.height=400

Sincerely,
Pål Baggethun
Research Engineer
Elkem Technology

TEST PLUGIN:

import ij.*;
import ij.process.*;
import ij.gui.*;
import ij.plugin.*;
import ij.plugin.frame.*;

public class Test_Plot_PixelSize implements PlugIn {

                public void run(String arg) {

                                float[] Xval = new float[1];
                                float[] Yval = new float[1];

                                Plot p = new Plot( "Test Plot PixelSize", "X", "Y", Xval, Yval);
                                ImageProcessor ip = p.getProcessor();

                                IJ.log(
                                                "\nPlot ImageProcessor:\n    getWith()="+ip.getWidth()+
                                                "\n    getHeight()="+ip.getHeight()+
                                                "\n \nPlot Options:\n    pp.width="+Prefs.getInt("pp.width",1)+
                                                "\n    pp.height="+Prefs.getInt("pp.height",1)
                                );

                }

}

MY JAVA PROPERTIES:

  java.version: 1.7.0_40
  java.vendor: Oracle Corporation
  os.name: Windows 7
  os.version: 6.1
  os.arch: amd64
  file.separator: \
  path.separator: ;
  line.separator: <cr><lf>
NOTICE: Please immediately e-mail back to sender if you are not the intended recipient. Thereafter delete the e-mail along with any attachments without making copies. The sender reserves all rights of privilege, confidentiality and copyright.

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Plot.getProcessor() vs. profile plot preferences

Rasband, Wayne (NIH/NIMH) [E]
On Oct 8, 2013, at 6:58 AM, Pål Baggethun wrote:

> Plot.getprocessor() returns an ImageProcessor that has different dimensions from those defined in the profile plot preferences pp.with and pp.height. Is this intentional?

You have to the add the plot margins, as this JavaScript example does:

   w = h = 400;
   Xval = [1];
   Yval = [1];
   p = new Plot("", "Test Plot PixelSize", "X", "Y", Xval, Yval);
   p.setFrameSize(w, h);
   ip = p.getProcessor();
   print("width: "+ (w + Plot.LEFT_MARGIN + Plot.RIGHT_MARGIN));
   print("height: "+ (h + Plot.TOP_MARGIN + Plot.BOTTOM_MARGIN));
   print(ip);

This is the output:

   width=478
   height=455
   ip[width=478, height=455, bits=8, min=0.0, max=255.0]

This example uses the setFrameSize() method to specify the plot size, which is better than changing "Width" and "Height" in Edit>Options>Profile Plot Options.

-wayne


>  The test plugin below writes the following to my log:
> Plot ImageProcessor:
>    getWith()=478
>    getHeight()=455
> Plot Options:
>    pp.width=400
>    pp.height=400
>
> Sincerely,
> Pål Baggethun
> Research Engineer
> Elkem Technology
>
> TEST PLUGIN:
>
> import ij.*;
> import ij.process.*;
> import ij.gui.*;
> import ij.plugin.*;
> import ij.plugin.frame.*;
>
> public class Test_Plot_PixelSize implements PlugIn {
>
>                public void run(String arg) {
>
>                                float[] Xval = new float[1];
>                                float[] Yval = new float[1];
>
>                                Plot p = new Plot( "Test Plot PixelSize", "X", "Y", Xval, Yval);
>                                ImageProcessor ip = p.getProcessor();
>
>                                IJ.log(
>                                                "\nPlot ImageProcessor:\n    getWith()="+ip.getWidth()+
>                                                "\n    getHeight()="+ip.getHeight()+
>                                                "\n \nPlot Options:\n    pp.width="+Prefs.getInt("pp.width",1)+
>                                                "\n    pp.height="+Prefs.getInt("pp.height",1)
>                                );
>
>                }
>
> }
>
> MY JAVA PROPERTIES:
>
>  java.version: 1.7.0_40
>  java.vendor: Oracle Corporation
>  os.name: Windows 7
>  os.version: 6.1
>  os.arch: amd64
>  file.separator: \
>  path.separator: ;
>  line.separator: <cr><lf>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Plot.getProcessor() vs. profile plot preferences

Michael Schmid
In reply to this post by Pål Baggethun
Hi Pål,

the width and height in plot options refer to the area actually used for the plot, not to the full image.
Additional space is needed for the axis labels etc outside the plot area.

Michael
________________________________________________________________
On Oct 8, 2013, at 12:58, Pål Baggethun wrote:

> Plot.getprocessor() returns an ImageProcessor that has different dimensions from those defined in the profile plot preferences pp.with and pp.height. Is this intentional?
>
> The test plugin below writes the following to my log:
>
> Plot ImageProcessor:
>    getWith()=478
>    getHeight()=455
> Plot Options:
>    pp.width=400
>    pp.height=400
>
> Sincerely,
> Pål Baggethun
> Research Engineer
> Elkem Technology
>
> TEST PLUGIN:
>
> import ij.*;
> import ij.process.*;
> import ij.gui.*;
> import ij.plugin.*;
> import ij.plugin.frame.*;
>
> public class Test_Plot_PixelSize implements PlugIn {
>
>                public void run(String arg) {
>
>                                float[] Xval = new float[1];
>                                float[] Yval = new float[1];
>
>                                Plot p = new Plot( "Test Plot PixelSize", "X", "Y", Xval, Yval);
>                                ImageProcessor ip = p.getProcessor();
>
>                                IJ.log(
>                                                "\nPlot ImageProcessor:\n    getWith()="+ip.getWidth()+
>                                                "\n    getHeight()="+ip.getHeight()+
>                                                "\n \nPlot Options:\n    pp.width="+Prefs.getInt("pp.width",1)+
>                                                "\n    pp.height="+Prefs.getInt("pp.height",1)
>                                );
>
>                }
>
> }
>
> MY JAVA PROPERTIES:
>
>  java.version: 1.7.0_40
>  java.vendor: Oracle Corporation
>  os.name: Windows 7
>  os.version: 6.1
>  os.arch: amd64
>  file.separator: \
>  path.separator: ;
>  line.separator: <cr><lf>
> NOTICE: Please immediately e-mail back to sender if you are not the intended recipient. Thereafter delete the e-mail along with any attachments without making copies. The sender reserves all rights of privilege, confidentiality and copyright.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

RESOLVED: Plot.getProcessor() vs. profile plot preferences

Pål Baggethun
In reply to this post by Rasband, Wayne (NIH/NIMH) [E]
Oh yes, I forgot about the margins. It now works perfectly well for my application. Thank you very much.

Paul


-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Rasband, Wayne (NIH/NIMH) [E]
Sent: 9. oktober 2013 02:10
To: [hidden email]
Subject: Re: Plot.getProcessor() vs. profile plot preferences

On Oct 8, 2013, at 6:58 AM, Pål Baggethun wrote:

> Plot.getprocessor() returns an ImageProcessor that has different dimensions from those defined in the profile plot preferences pp.with and pp.height. Is this intentional?

You have to the add the plot margins, as this JavaScript example does:

   w = h = 400;
   Xval = [1];
   Yval = [1];
   p = new Plot("", "Test Plot PixelSize", "X", "Y", Xval, Yval);
   p.setFrameSize(w, h);
   ip = p.getProcessor();
   print("width: "+ (w + Plot.LEFT_MARGIN + Plot.RIGHT_MARGIN));
   print("height: "+ (h + Plot.TOP_MARGIN + Plot.BOTTOM_MARGIN));
   print(ip);

This is the output:

   width=478
   height=455
   ip[width=478, height=455, bits=8, min=0.0, max=255.0]

This example uses the setFrameSize() method to specify the plot size, which is better than changing "Width" and "Height" in Edit>Options>Profile Plot Options.

-wayne


>  The test plugin below writes the following to my log:
> Plot ImageProcessor:
>    getWith()=478
>    getHeight()=455
> Plot Options:
>    pp.width=400
>    pp.height=400
>
> Sincerely,
> Pål Baggethun
> Research Engineer
> Elkem Technology
>
> TEST PLUGIN:
>
> import ij.*;
> import ij.process.*;
> import ij.gui.*;
> import ij.plugin.*;
> import ij.plugin.frame.*;
>
> public class Test_Plot_PixelSize implements PlugIn {
>
>                public void run(String arg) {
>
>                                float[] Xval = new float[1];
>                                float[] Yval = new float[1];
>
>                                Plot p = new Plot( "Test Plot PixelSize", "X", "Y", Xval, Yval);
>                                ImageProcessor ip = p.getProcessor();
>
>                                IJ.log(
>                                                "\nPlot ImageProcessor:\n    getWith()="+ip.getWidth()+
>                                                "\n    getHeight()="+ip.getHeight()+
>                                                "\n \nPlot Options:\n    pp.width="+Prefs.getInt("pp.width",1)+
>                                                "\n    pp.height="+Prefs.getInt("pp.height",1)
>                                );
>
>                }
>
> }
>
> MY JAVA PROPERTIES:
>
>  java.version: 1.7.0_40
>  java.vendor: Oracle Corporation
>  os.name: Windows 7
>  os.version: 6.1
>  os.arch: amd64
>  file.separator: \
>  path.separator: ;
>  line.separator: <cr><lf>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
NOTICE: Please immediately e-mail back to sender if you are not the intended recipient. Thereafter delete the e-mail along with any attachments without making copies. The sender reserves all rights of privilege, confidentiality and copyright.

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html