使用ggplot时如何轻松创建小数y值?
t <- as.factor(test=sample(seq(0,100,10),1000,rep=T))
d <- as.factor(sample(c(0,1),1000,rep=T)
p <- data.frame(t,d)
我最好的镜头是:
ggplot(p,aes(x=t,y=prop.table(table(t,d),1)[,1])) + geom_point()
然而,这不起作用,我想有一个更简单的方法...
答案 0 :(得分:1)
scale_y_continuous()接受可以接受函数的'formatter'参数。我的示例代码出现了一些错误,但请考虑以下事项:
require(ggplot2)
t <- as.factor(sample(seq(0,100,10),1000,rep=T))
d <- as.factor(sample(c(0,1),1000,rep=T))
p <- data.frame(t,d)
formatFraction <- function(x)
{
fraction <- paste(x*100, '/100', sep='')
fraction
}
plot <- ggplot(p, aes(x=prop.table(table(t, d), 1)[,2],
y=prop.table(table(t, d), 1)[,1])) + geom_point()
plot + scale_y_continuous(formatter=formatFraction)
答案 1 :(得分:0)
如果我理解你的问题,这应该可以使用上面@jthetzel中的formatFraction函数得到你想要的东西
plotData <- data.frame(prop.table(table(t,d),1))
#Plot only non-zero values
plotData <- plotData[plotData$d == 1 , ]
ggplot(data = plotData, aes(x = t, y = Freq)) + geom_point() +
scale_y_continuous(formatter = "formatFraction")