Skip to content

Forcing ticks in plot for hclust object outside the limits

3 messages · Uwe Ligges, Ales Ziberna

#
Hello!

I have the following problem.

I would like to plot the hclust object "hcd" (bellow, at the end of the 
mail) with ticks at seq(0.05,0.25,by=0.05). I tried using the code
plot(hcd)
and
plot(hcd,axes=FALSE)
axis(2,seq(0.05,0.25,by=0.05))

In both cases, the resoult is the same, ticks at 0.05 and 0.25 are not 
printed. I tried changing the ylim argumet in plot, however I got a warning 
"parameter "ylim" couldn't be set in high-level plot() function".

I would like to force those two ticks. Can this be done with axis or plot, 
or should I use "lines"?

Thanks in advance for any suggestions!
Ale? ?iberna


"hcd" <-
structure(list(merge = structure(as.integer(c(-4, -5, -1, -7,
-6, -10, -3, -12, -8, -2, 8, 1, -9, -11, 2, 3, -13, 4, 6, 5,
7, 9, 10, 11)), .Dim = as.integer(c(12, 2))), height = c(0.0906288626438465,
0.10278145998519, 0.114885217561497, 0.127812745765521, 0.132377986666522,
0.168594637784091, 0.177187802444346, 0.209803430657638, 0.210361529934791,
0.218946973173863, 0.234000873708654, 0.235702383243089), order = 
as.integer(c(4,
9, 12, 6, 13, 2, 8, 3, 10, 7, 1, 5, 11)), labels = NULL, method = "single",
    call = quote(hclust(d = d, method = "single")), dist.method = NULL), 
.Names = c("merge",
"height", "order", "labels", "method", "call", "dist.method"), class = 
"hclust")
#
Ale? ?iberna wrote:
Not easy with the plot method for a hclust object, because 0.05 and 0.25 
are getting clipped, because they are out od the "usr" coordinated of 
the plot.

Of course you could hack plot.hclust (in Namespace stats) by modifying 
.../R/library/src/stats/R/hclust.R as follows (in order to provide a 
proper ylim argument):

diff hclust.R-orig hclust.R

91c91,92
<               sub = NULL, xlab = NULL, ylab = "Height", ...)
---
 >               sub = NULL, xlab = NULL, ylab = "Height",
 >               ylim = NULL, ...)
116c117,120
<     .Internal(dend.window(n, merge, height, hang, labels, ...))
---
 >     height2 <- height
 >     if(!is.null(ylim))
 >         height2 <- c(range(ylim), rep(ylim[1], length(height) - 2))
 >     .Internal(dend.window(n, merge, height2, hang, labels, ...))


Note that this quick hack is a *dirty* solution.

Uwe Ligges
1 day later
#
Thank you very much for your reply and your *dirty* sloution, which does the 
trick for me!

Ale? ?iberna


----- Original Message ----- 
From: "Uwe Ligges" <ligges at statistik.uni-dortmund.de>
To: "Ale? ?iberna" <ales.ziberna at guest.arnes.si>
Cc: "R-help" <r-help at stat.math.ethz.ch>
Sent: Saturday, May 28, 2005 7:58 PM
Subject: Re: [R] Forcing ticks in plot for hclust object outside the limits