我之前没有问过这个问题,如果我没有提供足够详细的需要/解释,请原谅我。我在geom_step
中使用ggplot2
来尝试为具有两个单独的两级因子(编码为单个四级因子)的数据生成步长曲线。我希望第一个因素(在下面,A对B)用颜色表示,第二个因子(在下面,1对2)用线填充表示,即填充与白色。这是我正在寻找的一个经过编辑的模型:
是否可以在geom_step
中为ggplot2
构建的行添加边框?
如果没有,我是否可以使用较小的线宽和不同的颜色覆盖第二条geom_step
线以“手动”添加线条填充?我尝试在scale_colour_manual
术语中添加另一个不同颜色的geom_step,但这只是复制了第一个geom_step
曲线并返回消息“Scale for'color'已经存在。添加另一个缩放'颜色',将取代现有规模。“
示例代码如下。
events <- rep(c(0,1,2,3,4),4)
individual <- (as.factor(rep(c("A1","A2","B1","B2"),each=5)))
step <- c(1,2,3,4,5,3,4,5,6,7,5,6,7,8,9,7,8,9,10,11)
df <- data.frame(events,individual,step)
ggplot(df, aes(x=events, group=individual, colour=individual, y=step)) +
geom_step(size=1.8) +
scale_colour_manual(values=c("green2","green2", "orange", "orange"), name="Individual")
答案 0 :(得分:1)
这不是一个完整的解决方案:
通过添加另一个geom_step命令添加白色条带相当容易:
events<-rep(c(0,1,2,3,4),4)
individual<-(as.factor(rep(c("A1","A2","B1","B2"),each=5)))
step<-c(1,2,3,4,5,3,4,5,6,7,5,6,7,8,9,7,8,9,10,11)
filled <- rep(c(FALSE,TRUE),each=5)
data_frame<-data.frame(events,individual,step,filled)
ggplot(data_frame, aes(x=events, group=individual, colour=individual, y=step)) +
geom_step(size=1.8) +
scale_colour_manual(values=c("green2","green2", "orange", "orange"), name="Individual") +
geom_step(data=df[df$filled,], size=1.1, colour="white")
不幸的是,我不确定如何使传说符合这一点。
更容易的替代方案是使一些线条更轻。您可以定义lighten_colour
函数:
lighten_colour <- function(colour, lightness=0.5) {
# lightness should be between 0 and 1
white <- col2rgb("white") / 255
colour <- col2rgb(colour) / 255
rgb(t(white*lightness + colour*(1-lightness)))
}
...并将其用于绘图颜色。
ggplot(data_frame, aes(x=events, group=individual, colour=individual, y=step)) +
geom_step(size=1.8) +
scale_colour_manual(values=c(lighten_colour("green2"),
"green2",
lighten_colour("orange"),
"orange"),
name="Individual")