2013-06-20 24 views
4

我每年为不同的病人谁在三个级别中的一个所属的量。我想绘制每年三个级别的相对频率分布。比方说,病人的80%都标有C和其他病人A和B.由于多数具有C代替A分布和B将不可见。所以,我改变了Y轴。我ggplot得到了以下问题:A和B彩色栏显示,但对于C它从图中消失。 这里我做了一个例子:[R GGPLOT2 - geom_histogram:水平/颜色情节删除,由于极限y规模

library(ggplot2) 
# Data set 
grp <- rep(c("A","B","C"), c(10,10,80)) 
year <- floor(runif(100)*10/3) 
df <- data.frame(grp,year) 
# Plot 
ggplot(df,aes(year)) + 
    geom_histogram(aes(fill=grp),position="fill") + 
    scale_y_continuous(lim=c(0,0.5)) 

如果我删除最后一行(scale_y ...)然后我得到如图0-1和各级(颜色)的整个范围。随着scale_y ..级别(颜色)C消失,只有灰色背景可见。有谁知道我可以如何避免C的颜色消失?感谢提示。

+1

从这个链接http://www.cookbook-r.com/Graphs/Axes_(ggplot2)/它规定:“如果在y范围使用上述方法减少(scale_y_continuous) ,范围之外的数据将被忽略“。 C标签超出0.5范围,这就是为什么它被忽略。 – Harpal

+0

@Harpal。感谢您的链接。它回答了我的一些其他问题。 – giordano

回答

7

正如@Harpal已经说过,当你设置里面scale_y_continuous()所有超出这个限制从情节删除值的限制。如果你需要“放大”你的阴谋值从0到0.5使用coord_cartesian()代替scale_y_continuous()

ggplot(df,aes(year)) + 
    geom_histogram(aes(fill=grp),position="fill") + 
    coord_cartesian(y=c(0,0.5)) 

enter image description here

+0

非常感谢! – giordano