Hi<br>
<br>
If you want to use layout to control data and axis and label, you can 
set the limits a little bit wide enough to show the stuff on the boundary. But I 
always put axis and label in the same overlapped layer with data, all 
the layer share the same limits, we have to make sure to leave enough space for 
showing labels (I don&#39;t know if it&#39;s a better way??), so as to avoid this 
inconvenience.<br>
<br>
# a little change on limits, just to demonstrate..I didn&#39;t ajust <br>
titleLayer = qlayer(figLayer, titlePainter, mousePressFun = mouseLocator,<br>
   limits = qrect(0, 0, 700, 20), row = 0, col = 1)<br>
yaxis = qlayer(figLayer, yAxisPainter, mousePressFun = mouseLocator,<br>
   limits = qrect(-10,-10, 75, 500), row = 1, col = 0)<br>
plotLayer = qlayer(figLayer, plotPainter, mousePressFun = mouseLocator,<br>
   limits = qrect(0, 0, 700, 500), row = 1, col = 1)<br>
xaxis = qlayer(figLayer, xAxisPainter, mousePressFun = mouseLocator,<br>
   limits = qrect(-10, -10, 700, 95), row = 2, col = 1)<br>
<br>
Regards<br>
<br>
Tengfei<br><br><br><div class="gmail_quote">On Wed, Sep 1, 2010 at 8:54 AM, Yihui Xie <span dir="ltr">&lt;<a href="mailto:xie@yihui.name">xie@yihui.name</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Thanks! That was my guess, but it does not seem to work, e.g.:<br>
<br>
# all layers with clip=FALSE but still get clipped<br>
library(qtpaint)<br>
scene = qscene()<br>
figLayer = qlayer(scene, clip = FALSE)<br>
titlePainter = function(item, painter) {<br>
    qdrawText(painter, paste(rep(&quot;The Useless Title&quot;, 5), collapse = &quot; - &quot;),<br>
        300, 10, &quot;center&quot;, &quot;center&quot;)<br>
<div class="im">}<br>
yAxisPainter = function(item, painter) {<br>
    qdrawText(painter, as.character(pretty(1:400)), 37.5, pretty(1:400))<br>
}<br>
plotPainter = function(item, painter) {<br>
    qdrawPoint(painter, runif(1000, 0, 600), runif(1000, 0, 400))<br>
    qdrawRect(painter, 1, 1, 600 - 1, 400 - 1)<br>
}<br>
xAxisPainter = function(item, painter) {<br>
    qdrawText(painter, as.character(pretty(1:600)), pretty(1:600),<br>
        37.5)<br>
}<br>
mouseLocator = function(item, event) {<br>
    print(as.numeric(event$pos()))<br>
}<br>
titleLayer = qlayer(figLayer, titlePainter, mousePressFun = mouseLocator,<br>
</div>    limits = qrect(0, 0, 600, 20), clip = FALSE, row = 0, col = 1)<br>
<div class="im">yaxis = qlayer(figLayer, yAxisPainter, mousePressFun = mouseLocator,<br>
</div>    limits = qrect(0, 0, 75, 400), clip = FALSE, row = 1, col = 0)<br>
<div class="im">plotLayer = qlayer(figLayer, plotPainter, mousePressFun = mouseLocator,<br>
</div>    limits = qrect(0, 0, 600, 400), clip = FALSE, row = 1, col = 1)<br>
<div class="im">xaxis = qlayer(figLayer, xAxisPainter, mousePressFun = mouseLocator,<br>
</div>    limits = qrect(0, 0, 600, 75), clip = FALSE, row = 2, col = 1)<br>
<br>
layout = figLayer$gridLayout()<br>
<div class="im"><br>
layout$setRowStretchFactor(0, 1)<br>
layout$setRowStretchFactor(1, 5)<br>
layout$setRowStretchFactor(2, 1)<br>
layout$setColumnStretchFactor(0, 1)<br>
layout$setColumnStretchFactor(1, 5)<br>
<br>
print(view &lt;- qplotView(scene = scene))<br>
<br>
<br>
</div><div class="im">Regards,<br>
Yihui<br>
--<br>
Yihui Xie &lt;<a href="mailto:xieyihui@gmail.com">xieyihui@gmail.com</a>&gt;<br>
Phone: 515-294-6609 Web: <a href="http://yihui.name" target="_blank">http://yihui.name</a><br>
Department of Statistics, Iowa State University<br>
</div><div class="im">2215 Snedecor Hall, Ames, IA<br>
<br>
<br>
<br>
</div><div><div></div><div class="h5">On Wed, Sep 1, 2010 at 7:26 AM, Hadley Wickham &lt;<a href="mailto:hadley@rice.edu">hadley@rice.edu</a>&gt; wrote:<br>
&gt; For the answer to your first question, turning clipping off for that layer.<br>
&gt;<br>
&gt; Hadley<br>
&gt;<br>
&gt; On Wednesday, September 1, 2010, Yihui Xie &lt;<a href="mailto:xie@yihui.name">xie@yihui.name</a>&gt; wrote:<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m wondering if there are any approaches to completely show the<br>
&gt;&gt; graphical elements on the boundaries under a layout containing several<br>
&gt;&gt; layers. This is like the functionality par(xpd=NA) in base R graphics.<br>
&gt;&gt; See the example below that the texts for the origin (0,0) on the axes<br>
&gt;&gt; are partially hidden.<br>
&gt;&gt;<br>
&gt;&gt; My another problem is, I don&#39;t really understand the layout approach,<br>
&gt;&gt; although I&#39;ve been reading the qtpaint vignette and digging the Nokia<br>
&gt;&gt; Qt documentations. Specifically, how should we define the coordinate<br>
&gt;&gt; system in each layer in a layout? (I experimented with mouse clicking<br>
&gt;&gt; to get locations but got even more confused) With a single layer, I<br>
&gt;&gt; can plot the data using its range to define the limits and everything<br>
&gt;&gt; is fine. Besides, does anyone have a working demo to draw a simplest<br>
&gt;&gt; plot with the layout approach? I struggled with<br>
&gt;&gt; set(Column|Row)(Maximum|Minimum|Preferred)(Width|Height) and<br>
&gt;&gt; set(Column|Row)StretchFactor, but they do not behave as we expect them<br>
&gt;&gt; to, e.g. the stretch factor being 0 will not restrict the height/width<br>
&gt;&gt; of a layer to be a fixed value -- they change as we resize the window.<br>
&gt;&gt;<br>
&gt;&gt; Below is the R code:<br>
&gt;&gt;<br>
&gt;&gt; # I need hints on how to split the root layer into several regions<br>
&gt;&gt; # and what are their coordinate systems<br>
&gt;&gt; library(qtpaint)<br>
&gt;&gt; scene = qscene()<br>
&gt;&gt; figLayer = qlayer(scene,limits=qrect(0,0,675,550))<br>
&gt;&gt; titlePainter = function(item, painter) {<br>
&gt;&gt;     qdrawText(painter, &#39;The Useless Title&#39;, 300, 0,&#39;center&#39;,&#39;bottom&#39;)<br>
&gt;&gt;     tmp=as.matrix(titleLayer$boundingRect())<br>
&gt;&gt;     qdrawRect(painter, tmp[1,1],tmp[1,2],tmp[2,1],tmp[2,2])<br>
&gt;&gt; }<br>
&gt;&gt; yAxisPainter = function(item, painter) {<br>
&gt;&gt;     qdrawText(painter, as.character(pretty(1:400)), 37.5, pretty(1:400))<br>
&gt;&gt; }<br>
&gt;&gt; plotPainter = function(item, painter) {<br>
&gt;&gt;     qdrawPoint(painter, runif(1000, 0, 600), runif(1000, 0, 400))<br>
&gt;&gt;     qdrawRect(painter, 1, 1, 600-1, 400-1)<br>
&gt;&gt; }<br>
&gt;&gt; xAxisPainter = function(item, painter) {<br>
&gt;&gt;     qdrawText(painter, as.character(pretty(1:600)), pretty(1:600), 37.5)<br>
&gt;&gt; }<br>
&gt;&gt; mouseLocator = function(item, event){<br>
&gt;&gt;     print(as.numeric(event$pos()))<br>
&gt;&gt; }<br>
&gt;&gt; titleLayer = qlayer(figLayer, titlePainter,<br>
&gt;&gt; mousePressFun=mouseLocator, row=2,col=1)<br>
&gt;&gt; yaxis = qlayer(figLayer, yAxisPainter,mousePressFun=mouseLocator,row = 1,col=0)<br>
&gt;&gt; plotLayer = qlayer(figLayer, plotPainter,<br>
&gt;&gt; mousePressFun=mouseLocator,row = 1, col = 1)<br>
&gt;&gt; xaxis = qlayer(figLayer, xAxisPainter, mousePressFun=mouseLocator,row<br>
&gt;&gt; = 0, col = 1)<br>
&gt;&gt;<br>
&gt;&gt; layout = figLayer$gridLayout()<br>
&gt;&gt;<br>
&gt;&gt; layout$setRowMaximumHeight(0, 75)<br>
&gt;&gt; layout$setRowMinimumHeight(0, 60)<br>
&gt;&gt; # main plot region: 400x600<br>
&gt;&gt; layout$setRowPreferredHeight(1, 400)<br>
&gt;&gt; layout$setRowMaximumHeight(2, 75)<br>
&gt;&gt; layout$setRowMinimumHeight(2, 60)<br>
&gt;&gt;<br>
&gt;&gt; layout$setColumnMaximumWidth(0, 75)<br>
&gt;&gt; layout$setColumnMinimumWidth(0, 60)<br>
&gt;&gt; layout$setColumnPreferredWidth(1, 600)<br>
&gt;&gt; layout$setRowStretchFactor(0, 0)<br>
&gt;&gt; layout$setRowStretchFactor(1, 1)<br>
&gt;&gt; layout$setRowStretchFactor(2, 0)<br>
&gt;&gt; layout$setColumnStretchFactor(0, 0)<br>
&gt;&gt; layout$setColumnStretchFactor(1, 1)<br>
&gt;&gt;<br>
&gt;&gt; print(view&lt;-qplotView(scene = scene))<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; #################################################<br>
&gt;&gt;<br>
&gt;&gt;&gt; sessionInfo()<br>
&gt;&gt; R version 2.11.1 (2010-05-31)<br>
&gt;&gt; x86_64-pc-linux-gnu<br>
&gt;&gt;<br>
&gt;&gt; locale:<br>
&gt;&gt; [1] en_US.utf8<br>
&gt;&gt;<br>
&gt;&gt; attached base packages:<br>
&gt;&gt; [1] stats     graphics  grDevices utils     datasets  methods   base<br>
&gt;&gt;<br>
&gt;&gt; other attached packages:<br>
&gt;&gt; [1] qtpaint_0.7.9<br>
&gt;&gt;<br>
&gt;&gt; loaded via a namespace (and not attached):<br>
&gt;&gt; [1] qtbase_0.8-4 tools_2.11.1<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thanks a lot!<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Yihui<br>
&gt;&gt; --<br>
&gt;&gt; Yihui Xie &lt;<a href="mailto:xieyihui@gmail.com">xieyihui@gmail.com</a>&gt;<br>
&gt;&gt; Phone: 515-294-6609 Web: <a href="http://yihui.name" target="_blank">http://yihui.name</a><br>
&gt;&gt; Department of Statistics, Iowa State University<br>
&gt;&gt; 3211 Snedecor Hall, Ames, IA<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Qtinterfaces-devel mailing list<br>
&gt;&gt; <a href="mailto:Qtinterfaces-devel@lists.r-forge.r-project.org">Qtinterfaces-devel@lists.r-forge.r-project.org</a><br>
&gt;&gt; <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel</a><br>
&gt;&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Assistant Professor / Dobelman Family Junior Chair<br>
&gt; Department of Statistics / Rice University<br>
&gt; <a href="http://had.co.nz/" target="_blank">http://had.co.nz/</a><br>
&gt;<br>
_______________________________________________<br>
Qtinterfaces-devel mailing list<br>
<a href="mailto:Qtinterfaces-devel@lists.r-forge.r-project.org">Qtinterfaces-devel@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Tengfei Yin<br>MCDB PhD student <br>1620 Howe Hall, 2274,<br>Iowa State University<br>Ames, IA,50011-2274<br>Homepage: <a href="http://www.tengfei.name" target="_blank">www.tengfei.name</a><br>

<div><br></div><br>