Re: [R] figure margins too large in RGtk2 drawing area as cairo device - why?

2012-03-09 Thread Mark Heckmann
Thanks, Peter.  
I did the following: restart R and run the same code with and without a minimal 
system pause (Sys.sleep) after the line that adds the device to the GTK window.
Adding a pause will make it work, though I do not understand what is happening 
here. Note the different settings of par(din).
This is probably not the expected behavior, I guess.
Any ideas why this is the case? It seems as if din is not adjusted on time? 
Might that be?


 library(RGtk2)
 library(cairoDevice)
 
 win = gtkWindow()
 da = gtkDrawingArea()
 asCairoDevice(da) 
[1] TRUE
 win$add(da)  
 plot(1:10)   
Fehler in plot.new() : Grafikränder zu groß
 par(c(din, mai))
$din
[1] 0.0139 0.0139

$mai
[1] 0.7791667 0.6263889 0.6263889 0.3208333

 
 win = gtkWindow()
 da = gtkDrawingArea()
 asCairoDevice(da) 
[1] TRUE
 win$add(da)  
 Sys.sleep(.1) 
 plot(1:10)
 par(c(din, mai))   
$din
[1] 2.78 2.78

$mai
[1] 0.7791667 0.6263889 0.6263889 0.3208333


Thanks in advance
--- Mark


Am 09.03.2012 um 00:01 schrieb peter dalgaard:

 
 On Mar 8, 2012, at 23:25 , Mark Heckmann wrote:
 
 Peter, thanks for the answer!
 Indeed, it does work if I set par(mar=c(0,0,0,0)) but not when it is set to 
 the default values mar=c(5.1, 4.1, 4.1, 2.1).
 The par settings returned in the example are the defaults, so no 
 extraordinary big mar settings or char size (see below).
 Also, it does not matter what size the drawing area is set to (e.g. 1000x 
 1000). The error always occurs.
 Any idea?
 
 
 The other parameters...
 
 What about din and mai? The margin problem usually means that the sum of 
 the relevant margins is bigger than the device size. E.g.
 
 quartz()
 par(mai=rep(4,4))
 plot(0)
 Error in plot.new() : figure margins too large
 
 
 
 examples:
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 par(c(mar, cra, oma))
 $mar
 [1] 5.1 4.1 4.1 2.1
 
 $cra
 [1]  7 11
 
 $oma
 [1] 0 0 0 0
 
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß  ###ERROR###
 
 Thanks 
 Mark
 
 
 Am 08.03.2012 um 22:48 schrieb peter dalgaard:
 
 
 On Mar 8, 2012, at 20:27 , Mark Heckmann wrote:
 
 When using a gtkDrawingArea as a Cairo device I very often encounter the 
 error: figure margins too large 
 Even for the below getting started example from 
 http://www.ggobi.org/rgtk2/ this is the case.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 
 Also enlarging the drawing area does not help.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 da$setSizeRequest(700, 700)
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 Any ideas?
 
 I'd check the par() settings for the device. Especially mar/mai and cra/cin 
 to see whether margins are set unusually large and/or character sizes are 
 unusually big, but check help(par) yourself. 
 
 -- 
 Peter Dalgaard, Professor,
 Center for Statistics, Copenhagen Business School
 Solbjerg Plads 3, 2000 Frederiksberg, Denmark
 Phone: (+45)38153501
 Email: pd@cbs.dk  Priv: pda...@gmail.com
 
 
 
 
 
 
 
 
 
 
 Mark Heckmann
 Blog: www.markheckmann.de
 R-Blog: http://ryouready.wordpress.com
 
 
 
 
 
 
 
 
 
 
 
 -- 
 Peter Dalgaard, Professor,
 Center for Statistics, Copenhagen Business School
 Solbjerg Plads 3, 2000 Frederiksberg, Denmark
 Phone: (+45)38153501
 Email: pd@cbs.dk  Priv: pda...@gmail.com
 
 
 
 
 
 
 
 


Mark Heckmann
Blog: www.markheckmann.de
R-Blog: http://ryouready.wordpress.com











[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] figure margins too large in RGtk2 drawing area as cairo device - why?

2012-03-09 Thread Michael Lawrence
Hi Mark,

This comes down to the way that GTK+ allocates size to its widgets. The
allocation of a widget is initialized to have a width and height of 1. When
a child is added to a visible parent, the parent will execute its lay out
algorithm and allocate a certain amount of space to the widget. The widget
is notified of this change via an event that arrives after an iteration of
the event loop. An event loop iteration may be forced in a number of ways;
you've discovered the Sys.sleep() method.

However, it is generally not good practice to show a container before
adding its children, unless widgets are being added in the middle of a
session, which is rare. If you were to instead do something like this:

win = gtkWindow(show = FALSE)
win$setDefaultSize(500, 500)
da = gtkDrawingArea()
asCairoDevice(da)
win$add(da)
win$showAll()
plot(1:10)

Then GTK+ will correctly initialize the allocation of the widget, I think
even before a configure event is received. The above approach is my
recommended solution to your problem.

Thanks,
Michael

On Fri, Mar 9, 2012 at 1:39 AM, Mark Heckmann mark.heckm...@gmx.de wrote:

 Thanks, Peter.
 I did the following: restart R and run the same code with and without a
 minimal system pause (Sys.sleep) after the line that adds the device to the
 GTK window.
 Adding a pause will make it work, though I do not understand what is
 happening here. Note the different settings of par(din).
 This is probably not the expected behavior, I guess.
 Any ideas why this is the case? It seems as if din is not adjusted on
 time? Might that be?


  library(RGtk2)
  library(cairoDevice)
 
  win = gtkWindow()
  da = gtkDrawingArea()
  asCairoDevice(da)
 [1] TRUE
  win$add(da)
  plot(1:10)
 Fehler in plot.new() : Grafikränder zu groß
  par(c(din, mai))
 $din
 [1] 0.0139 0.0139

 $mai
 [1] 0.7791667 0.6263889 0.6263889 0.3208333


  win = gtkWindow()
  da = gtkDrawingArea()
  asCairoDevice(da)
 [1] TRUE
  win$add(da)
  Sys.sleep(.1)
  plot(1:10)
  par(c(din, mai))
 $din
 [1] 2.78 2.78

 $mai
 [1] 0.7791667 0.6263889 0.6263889 0.3208333


 Thanks in advance
 --- Mark


 Am 09.03.2012 um 00:01 schrieb peter dalgaard:

 
  On Mar 8, 2012, at 23:25 , Mark Heckmann wrote:
 
  Peter, thanks for the answer!
  Indeed, it does work if I set par(mar=c(0,0,0,0)) but not when it is
 set to the default values mar=c(5.1, 4.1, 4.1, 2.1).
  The par settings returned in the example are the defaults, so no
 extraordinary big mar settings or char size (see below).
  Also, it does not matter what size the drawing area is set to (e.g.
 1000x 1000). The error always occurs.
  Any idea?
 
 
  The other parameters...
 
  What about din and mai? The margin problem usually means that the
 sum of the relevant margins is bigger than the device size. E.g.
 
  quartz()
  par(mai=rep(4,4))
  plot(0)
  Error in plot.new() : figure margins too large
 
 
 
  examples:
 
  win = gtkWindow()
  da = gtkDrawingArea()
  win$add(da)
  asCairoDevice(da)
  [1] TRUE
  par(c(mar, cra, oma))
  $mar
  [1] 5.1 4.1 4.1 2.1
 
  $cra
  [1]  7 11
 
  $oma
  [1] 0 0 0 0
 
  plot(1:10)
  Fehler in plot.new() : Grafikränder zu groß  ###ERROR###
 
  Thanks
  Mark
 
 
  Am 08.03.2012 um 22:48 schrieb peter dalgaard:
 
 
  On Mar 8, 2012, at 20:27 , Mark Heckmann wrote:
 
  When using a gtkDrawingArea as a Cairo device I very often encounter
 the error: figure margins too large
  Even for the below getting started example from
 http://www.ggobi.org/rgtk2/ this is the case.
 
  win = gtkWindow()
  da = gtkDrawingArea()
  win$add(da)
  asCairoDevice(da)
  [1] TRUE
  plot(1:10)
  Fehler in plot.new() : Grafikränder zu groß
 
 
  Also enlarging the drawing area does not help.
 
  win = gtkWindow()
  da = gtkDrawingArea()
  win$add(da)
  asCairoDevice(da)
  [1] TRUE
  da$setSizeRequest(700, 700)
  plot(1:10)
  Fehler in plot.new() : Grafikränder zu groß
 
  Any ideas?
 
  I'd check the par() settings for the device. Especially mar/mai and
 cra/cin to see whether margins are set unusually large and/or character
 sizes are unusually big, but check help(par) yourself.
 
  --
  Peter Dalgaard, Professor,
  Center for Statistics, Copenhagen Business School
  Solbjerg Plads 3, 2000 Frederiksberg, Denmark
  Phone: (+45)38153501
  Email: pd@cbs.dk  Priv: pda...@gmail.com
 
 
 
 
 
 
 
 
 
  
  Mark Heckmann
  Blog: www.markheckmann.de
  R-Blog: http://ryouready.wordpress.com
 
 
 
 
 
 
 
 
 
 
 
  --
  Peter Dalgaard, Professor,
  Center for Statistics, Copenhagen Business School
  Solbjerg Plads 3, 2000 Frederiksberg, Denmark
  Phone: (+45)38153501
  Email: pd@cbs.dk  Priv: pda...@gmail.com
 
 
 
 
 
 
 
 

 
 Mark Heckmann
 Blog: www.markheckmann.de
 R-Blog: http://ryouready.wordpress.com











 [[alternative HTML version deleted]]


 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 

[R] figure margins too large in RGtk2 drawing area as cairo device - why?

2012-03-08 Thread Mark Heckmann
When using a gtkDrawingArea as a Cairo device I very often encounter the error: 
figure margins too large 
Even for the below getting started example from http://www.ggobi.org/rgtk2/ 
this is the case.

 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
[1] TRUE
 plot(1:10)   
Fehler in plot.new() : Grafikränder zu groß
 

Also enlarging the drawing area does not help.

 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
[1] TRUE
 da$setSizeRequest(700, 700)
 plot(1:10)   
Fehler in plot.new() : Grafikränder zu groß

Any ideas?
Thanks in advance.
--Mark

PS. My system:

R version 2.14.1 (2011-12-22)
Platform: i386-apple-darwin9.8.0/i386 (32-bit)
MacOS 10.6




Mark Heckmann
Blog: www.markheckmann.de
R-Blog: http://ryouready.wordpress.com

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] figure margins too large in RGtk2 drawing area as cairo device - why?

2012-03-08 Thread peter dalgaard

On Mar 8, 2012, at 20:27 , Mark Heckmann wrote:

 When using a gtkDrawingArea as a Cairo device I very often encounter the 
 error: figure margins too large 
 Even for the below getting started example from http://www.ggobi.org/rgtk2/ 
 this is the case.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 
 Also enlarging the drawing area does not help.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 da$setSizeRequest(700, 700)
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 Any ideas?

I'd check the par() settings for the device. Especially mar/mai and cra/cin to 
see whether margins are set unusually large and/or character sizes are 
unusually big, but check help(par) yourself. 

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd@cbs.dk  Priv: pda...@gmail.com

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] figure margins too large in RGtk2 drawing area as cairo device - why?

2012-03-08 Thread Mark Heckmann
Peter, thanks for the answer!
Indeed, it does work if I set par(mar=c(0,0,0,0)) but not when it is set to the 
default values mar=c(5.1, 4.1, 4.1, 2.1).
The par settings returned in the example are the defaults, so no extraordinary 
big mar settings or char size (see below).
Also, it does not matter what size the drawing area is set to (e.g. 1000x 
1000). The error always occurs.
Any idea?

examples:

 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
[1] TRUE
 par(c(mar, cra, oma))
$mar
[1] 5.1 4.1 4.1 2.1

$cra
[1]  7 11

$oma
[1] 0 0 0 0

 plot(1:10)   
Fehler in plot.new() : Grafikränder zu groß  ###ERROR###

Thanks 
Mark

Am 08.03.2012 um 22:48 schrieb peter dalgaard:

 
 On Mar 8, 2012, at 20:27 , Mark Heckmann wrote:
 
 When using a gtkDrawingArea as a Cairo device I very often encounter the 
 error: figure margins too large 
 Even for the below getting started example from 
 http://www.ggobi.org/rgtk2/ this is the case.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 
 Also enlarging the drawing area does not help.
 
 win = gtkWindow()
 da = gtkDrawingArea()
 win$add(da)
 asCairoDevice(da)
 [1] TRUE
 da$setSizeRequest(700, 700)
 plot(1:10)   
 Fehler in plot.new() : Grafikränder zu groß
 
 Any ideas?
 
 I'd check the par() settings for the device. Especially mar/mai and cra/cin 
 to see whether margins are set unusually large and/or character sizes are 
 unusually big, but check help(par) yourself. 
 
 -- 
 Peter Dalgaard, Professor,
 Center for Statistics, Copenhagen Business School
 Solbjerg Plads 3, 2000 Frederiksberg, Denmark
 Phone: (+45)38153501
 Email: pd@cbs.dk  Priv: pda...@gmail.com
 
 
 
 
 
 
 
 


Mark Heckmann
Blog: www.markheckmann.de
R-Blog: http://ryouready.wordpress.com

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.