[R] rotate pie chart
Paul Murrell
p.murrell at auckland.ac.nz
Tue May 24 23:41:28 CEST 2005
Hi
gridBase won't help here (grid can't rotate traditional graphics output).
I think you have to get your hands dirty on this one, but it's not too
hard. Here's a function pie90() which is a tiny modification of pie().
Does that do the trick?
pie90 <- function (x, labels = names(x), edges = 200, radius = 0.8,
density = NULL,
angle = 45, col = NULL, border = NULL, lty = NULL, main = NULL,
...)
{
if (!is.numeric(x) || any(is.na(x) | x <= 0))
stop("'x' values must be positive.")
if (is.null(labels))
labels <- as.character(1:length(x))
x <- c(0, cumsum(x)/sum(x))
dx <- diff(x)
plot.new()
pin <- par("pin")
xlim <- ylim <- c(-1, 1)
if (pin[1] > pin[2])
xlim <- (pin[1]/pin[2]) * xlim
else ylim <- (pin[2]/pin[1]) * ylim
plot.window(xlim, ylim, "", asp = 1)
nx <- length(dx)
if (is.null(col))
col <- if (is.null(density))
c("white", "lightblue", "mistyrose", "lightcyan",
"lavender", "cornsilk")
else par("fg")
col <- rep(col, length.out = nx)
border <- rep(border, length.out = nx)
lty <- rep(lty, length.out = nx)
angle <- rep(angle, length.out = nx)
density <- rep(density, length.out = nx)
for (i in 1:nx) {
n <- max(2, floor(edges * dx[i]))
# modified line below
t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) + pi/2
xc <- c(cos(t2p), 0) * radius
yc <- c(sin(t2p), 0) * radius
polygon(xc, yc, density = density[i], angle = angle[i],
border = border[i], col = col[i], lty = lty[i])
# modified line below
t2p <- 2 * pi * mean(x[i + 0:1]) + pi/2
xc <- cos(t2p) * radius
yc <- sin(t2p) * radius
if (!is.na(lab <- labels[i]) && lab != "") {
lines(c(1, 1.05) * xc, c(1, 1.05) * yc)
text(1.1 * xc, 1.1 * yc, lab, xpd = TRUE, adj = ifelse(xc <
0, 1, 0), ...)
}
}
title(main = main, ...)
invisible(NULL)
}
Paul
Sean Davis wrote:
> You might want to look at grid graphics and gridBase. I don't know in
> detail how to go about what you are asking, but grid allows you to
> rotate plots arbitrarily. Here are a couple of links that I think are
> useful.
>
> http://www.stat.auckland.ac.nz/~paul/grid/grid.html
> http://www.stat.auckland.ac.nz/~paul/grid/doc/rotated.pdf
>
> Sean
>
> On May 24, 2005, at 10:09 AM, Lars wrote:
>
>> hey,
>>
>> about two weeks ago i posted a question concerning the display of two
>> piecharts on one plot. after now being able to do so, i need to rotate
>> them. the first piece of my pie is suppose to start at 0° but at 90°.
>> i tried several things, all failing in the end. anyone out there who
>> has an idea?
>>
>> Lars
>>
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide!
>> http://www.R-project.org/posting-guide.html
>
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list