4

我每年都有一定数量的不同患者属于三个级别之一。我想绘制每年三个级别的相对频率分布。假设 80% 的患者标有 C,另一位患者标有 A 和 B。由于大多数患者有 C,因此 A 和 B 的分布不可见。所以,我改变了y轴。我在 ggplot 中遇到了以下问题:显示了 A 和 B 的彩色列,但对于 C,它从图中消失了。这里我做了一个例子:

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 的颜色消失?感谢您的提示。

4

1 回答 1

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))

在此处输入图像描述

于 2013-06-20T11:05:04.027 回答