L.S.

Please find below a patch for dendrogram.R (stats package)
against revision r54107 which allows one to pass the xpd
parameter as a component of the nodePar list (to be
passed to plot.dendrogram).

I hope I did not overlook anything.

Best,
Tobias

378a379
>     lab.xpd <- Xtract("xpd", nPar, default = c(TRUE, TRUE), i)
391c392
<        text(X, Y, nodeText, xpd = TRUE, srt = srt, adj = adj,
---
>        text(X, Y, nodeText, xpd = lab.xpd, srt = srt, adj = adj,
436c437
<            text(xBot, yBot + vln, nodeText, xpd = TRUE,
---
>            text(xBot, yBot + vln, nodeText, xpd = lab.xpd,



On 01/25/2011 04:34 PM, Karl Forner wrote:
Hi Tobias and thank you for your reply,

Using your insight I managed to work-around the issue (with some help)
by increasing
the "mai" option of par().
For example a "mai" with first coordinate (bottom) set to 5 allows to
display ~ 42 letters.

We tried to change the xpd value in the text() call that you mentioned,
but it did not seem to fix the problem.

But I think this is very annoying: the dendrogram plot is meant to be
the common unique plotting for all clustering stuff
and suddenly if your labels are just too long, nothing get displayed,
without even a warning.
I suppose that the margins should be dynamically set based on the max
label text drawn length...

The hclust plot seemed to handle very nicely these long labels, but I
need to display colored labels and the only way I found is to use the
plot.dendrogram for this.

Best,

Karl

On Tue, Jan 25, 2011 at 12:17 PM, Tobias Verbeke
<tobias.verb...@openanalytics.eu
<mailto:tobias.verb...@openanalytics.eu>> wrote:

    Hi Karl,


    On 01/25/2011 11:27 AM, Karl Forner wrote:

        It seems that the plot function for dendrograms does not draw
        labels when
        they are too long.

            hc<- hclust(dist(USArrests), "ave")
            dend1<- as.dendrogram(hc)
            dend2<- cut(dend1, h=70)
            dd<- dend2$lower[[1]]
            plot(dd) # first label is drawn
            attr(dd[[1]], "label")<- "aaaaaaaaaaaaaaaaaa"
            plot(dd) # first label is NOT drawn


        Is this expected ?


    Reading the code of stats:::plotNode, yes.

    Clipping to the figure region is hard-coded.

    You can see it is clipping to the figure region as follows:


    hc <- hclust(dist(USArrests), "ave")
    dend1 <- as.dendrogram(hc)
    dend2 <- cut(dend1, h=70)
    dd <- dend2$lower[[1]]
    op <- par(oma = c(8,4,4,2)+0.1, xpd = NA)

    plot(dd) # first label is drawn
    attr(dd[[1]], "label") <- "abcdefghijklmnopqrstuvwxyz"

    plot(dd) # first label is NOT drawn
    box(which = "figure")
    par(op)


        Is it possible to force the drawing ?


    These are (from very quick reading -- not verified)
    the culprit lines in plotNode, I think:

    text(xBot, yBot + vln, nodeText, xpd = TRUE, # <- clipping hard-coded
                      cex = lab.cex, col = lab.col, font = lab.font)

    Best,
    Tobias



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

Reply via email to