任何人都可以帮我解决如何在R中创建一个穿孔卡图(不使用ggplot)?
就像在python中创建的this one一样:
答案 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?
答案 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)