我正在研究R并尝试使用饼图绘制时钟。如何在R中绘制时钟?
代码:
pie(c(25,20,15,10,10,30),
labels = c(1,2,3,4,5,6,7,8,9,10,11,12),
col = rainbow(length(lbls)), clockwise = TRUE, init.angle = 90)
但我需要所有12个标签在那里独立的没有在输入段。
我如何能实现呢?
问候
我正在研究R并尝试使用饼图绘制时钟。如何在R中绘制时钟?
代码:
pie(c(25,20,15,10,10,30),
labels = c(1,2,3,4,5,6,7,8,9,10,11,12),
col = rainbow(length(lbls)), clockwise = TRUE, init.angle = 90)
但我需要所有12个标签在那里独立的没有在输入段。
我如何能实现呢?
问候
保罗·马雷尔在他的最后一本书(R graphics 2nd Edition)有绘图使用grid
和gwidget
一个互动时钟一些代码。
这里是绘制简单的非交互式的时钟示例代码:
require(grid)
drawClock <- function(hour, minute) {
t <- seq(0, 2*pi, length=13)[-13]
x <- cos(t)
y <- sin(t)
grid.newpage()
pushViewport(dataViewport(x, y, gp=gpar(lwd=4)))
# Circle with ticks
grid.circle(x=0, y=0, default="native",
r=unit(1, "native"))
grid.segments(x, y, x*.9, y*.9, default="native")
# Hour hand
hourAngle <- pi/2 - (hour + minute/60)/12*2*pi
grid.segments(0, 0,
.6*cos(hourAngle), .6*sin(hourAngle),
default="native", gp=gpar(lex=4))
# Minute hand
minuteAngle <- pi/2 - (minute)/60*2*pi
grid.segments(0, 0,
.8*cos(minuteAngle), .8*sin(minuteAngle),
default="native", gp=gpar(lex=2))
grid.circle(0, 0, default="native", r=unit(1, "mm"),
gp=gpar(fill="white"))
}
现在,你可以尝试这样的
drawClock(hour = 2, minute = 30)
的完整代码here
我可以在时钟内保留我的饼图吗? pie(c(25,20,15,10,10,30),顺时针= TRUE,init.angle = 90)和数字外像10,20,30 ... 100%,而不是1-12。基本上我想绘制饼图里面的时钟%。但网格没有饼图功能。 – Manish 2012-08-10 01:39:23
遇到同样问题后,更新此主题。 如果你想保持你的派和时钟在上面,你应该使用'GridBase'包。
实施例(使用dickoa的极好的解决方案作为码的基础上):
require('grid')
require('gridBase')
pie(c(1,2),
clockwise=TRUE,
radius=1.0,
init.angle=90,
col=c('pink', 'lightblue'),
border=NA)
drawClock <- function(hour, minute)
{
t <- seq(0, 2*pi, length=13)[-13]
x <- cos(t)
y <- sin(t)
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
# ticks
grid.segments(x, y, x*.9, y*.9, default="native")
# Hour hand
hourAngle <- pi/2 - (hour + minute/60)/12*2*pi
grid.segments(0, 0,
.6*cos(hourAngle), .6*sin(hourAngle),
default="native", gp=gpar(lex=4))
# Minute hand
minuteAngle <- pi/2 - (minute)/60*2*pi
grid.segments(0, 0,
.8*cos(minuteAngle), .8*sin(minuteAngle),
default="native", gp=gpar(lex=2))
popViewport(3)
}
drawClock(hour = 2, minute = 25)
结果:
有一个在用于图形的knitr手册的时钟:HTTP://云.github.com/downloads/yihui/knitr/knitr-graphics.pdf(也是动画,第4页)。 – 2012-08-09 07:52:23