从facet_wrap中的某些面板中删除axis.ticks

时间:2016-11-01 12:55:53

标签: r ggplot2

我正在使用ggplot使用facet_wrap绘制y对x的两个因子f1和f2。我想仅为第一列保留y轴的刻度(表示因子f2的给定值)并删除其他列。有没有办法做到这一点?我尝试了很多方法(包括scale = free_y)但没有成功。下面是一个简单的代码:

y = rnorm(100)
x = rnorm(100)
type = rep(1:5,20)
f1 =  sample(LETTERS[1:3], 100, replace=TRUE, prob=c(0.3, 0.3, 0.4) )
f2 =  sample(LETTERS[4:6], 100, replace=TRUE, prob=c(0.3, 0.3, 0.4) )
df = data.frame(cbind(x, y,f1,f2, type))
df$x = as.numeric(as.character(df$x)); df$y = as.numeric(as.character(df$y))

p1 = ggplot(data = df, aes(x, y, linetype = type)) +
geom_line(aes(linetype = type))+ scale_linetype_manual(values=c("solid", "F1", "dotted", "twodash","dashed")) +
scale_size_manual(values=c(0.5, 0.5, 0.5,0.5,0.5)) + 
geom_point(size=0.5, shape=21, fill="black")  +
labs(y="y") + 
facet_wrap( ~   f1 + f2 , ncol=3, scales = "free_y") +
theme_bw() +
theme(panel.margin = unit(0.8, "lines")) +
theme(plot.title = element_text(size = rel(1.2))) +
theme(axis.ticks.length=unit(0.2,"cm")) +
theme(strip.text.x = element_text(size=11)) +
theme(strip.background = element_rect(colour="white", fill="gray")) 
p1

enter image description here 问题:

如何仅为左侧的第一列保留y轴的刻度(即因子f2 =“D”)。我知道y轴有不同的水平,但对我来说这不是问题。

非常感谢

阿卜杜勒 - 拉希姆

1 个答案:

答案 0 :(得分:1)

我认为你实际上是facet_grid而不是facet_wrap

见下文:

p1 <- ggplot(data = df, aes(x, y, linetype = type)) +


geom_line(aes(linetype = type))+ scale_linetype_manual(values=c("solid", "F1", "dotted", "twodash","dashed")) +
  scale_size_manual(values=c(0.5, 0.5, 0.5,0.5,0.5)) + 
  geom_point(size=0.5, shape=21, fill="black")  +
  labs(y="y") + 
  facet_grid( f1~f2 ) +
  theme_bw() +
  theme(panel.margin = unit(0.8, "lines")) +
  theme(plot.title = element_text(size = rel(1.2))) +
  theme(axis.ticks.length=unit(0.2,"cm")) +
  theme(strip.text.x = element_text(size=11)) +
  theme(strip.background = element_rect(colour="white", fill="gray")) 
p1

output