R中的Punchcard情节

时间:2013-11-18 09:34:21

标签: r plot

任何人都可以帮我解决如何在R中创建一个穿孔卡图(不使用ggplot)?

就像在python中创建的this one一样: enter image description here

2 个答案:

答案 0 :(得分:4)

这个怎么样?

pctable<-data.frame(expand.grid(c("monday","tuesday","wednesday","thursday","friday","saturday","sunday"),1:22))
colnames(pctable)<-c("weekday","day")
pctable$value=rnorm(nrow(pctable),15,8)
plot(pctable$day,pctable$weekday,cex=pctable$value/(max(pctable$value)/5), col=rgb(0,0,1), pch=19, yaxt="n", xaxt="n")
axis(1, at=1:22, labels=c(1:22)) 
axis(2, at=1:7, labels=c("monday","tuesday","wednesday","thursday","friday","saturday","sunday"), cex.axis=0.7) 

您可能需要一个函数来返回正确的cex ='?'您的比例值,它不会调整大小。

出于兴趣,为什么不ggplot? plot

答案 1 :(得分:4)

原始人物上的黑色边框看起来不错。它可以用symbols()复制。添加sqrt((pctable$value / max(pctable$value)) / pi)是为了确保值与符号的表面成比例,而不是与其半径成比例。

pctable <- data.frame(expand.grid(weekday=c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"),
                              day=1:22), value=abs(rnorm(nrow(pctable), 20, 30)))

par(list(las=1, mar=c(6,6,1,1), mgp=c(4.5,1,0)))

bubble.size <- sqrt((pctable$value / max(pctable$value)) / pi)
symbols(pctable$day, pctable$weekday, circles=bubble.size,
    inches=.2, fg="black", bg="blue", yaxt="n", xaxt="n", xlab="Day", ylab="Weekday")
axis(1, at=1:22, labels=c(1:22)) 
axis(2, at=1:7,labels=rev(c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")), cex.axis=0.7) 

enter image description here