这是来自this question, in which I was trying to suppress the vertical gridlines的后续内容。
学习者提供的解决方案是添加scale_x_continuous(breaks = NA),但这也有抑制x轴标签的副作用。我很乐意手工写回标签,但我不清楚如何找出标签的位置。
另一个选项是禁止所有网格线(使用opts(panel.grid.major = theme_blank())或其他一些),然后仅在主要水平网格线中绘制。同样,这里的问题是如何弄清楚要提供给geom_hline()的图中的断点。
所以,基本上,我的选择是:
以下是两个选项:
library(ggplot2)
data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))
# suppressing vertical gridlines and x-axis labels
# need to re-draw x-axis labels
ggplot(data, aes(x, y)) +
geom_bar(stat = 'identity') +
scale_x_continuous(breaks = NA) +
opts(
panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),
panel.grid.minor = theme_blank(),
panel.background = theme_blank(),
axis.ticks = theme_blank()
)
# suppressing all gridlines
# need to re-draw horizontal gridlines, probably with geom_hbar()
ggplot(data, aes(x, y)) +
geom_bar(stat = 'identity') +
scale_x_continuous(breaks = NA) +
opts(
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
panel.background = theme_blank(),
axis.ticks = theme_blank()
)
答案 0 :(得分:6)
由于评论中的代码不能很好地显示,所以我将此作为答案发布。您可以执行以下操作并使用geom_text()
手动添加标签:
ggplot(data, aes(x, y)) +
geom_bar(stat = 'identity') +
scale_x_continuous(breaks = NA) +
opts(
panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),
panel.grid.minor = theme_blank(),
panel.background = theme_blank(),
axis.ticks = theme_blank()
)+
geom_text(aes(label = x, y = -.3))
答案 1 :(得分:2)
上述答案在ggplot2版本0.9.2.1及更高版本中不起作用。幸运的是,现在有一种更简单的方法可以做到这一点,如回答另一个问题所述:https://stackoverflow.com/a/8992102/800044。
答案 2 :(得分:1)
您可以直接编辑grob
,尝试:
grid.remove(gPath("panel.grid.minor.x.polyline"),grep=T)
grid.remove(gPath("panel.grid.major.x.polyline"),grep=T)
它将剥离你的垂直线条。我只是在函数中使用它时遇到问题,因为我猜它只在打印ggplot时才有效。
但是,如果那不是你的情况而且你只需要图形,那么它将起作用。
答案 3 :(得分:0)
我在google搜索此问题时发现了这个解决方案。我还没有尝试过。
http://wiki.stdout.org/rcookbook/Graphs/Axes%20(ggplot2)/
你必须向下滚动一下。
最佳,
菲利克斯
答案 4 :(得分:0)
对于在2020年进行查询的人们,我在这里的rdrr.io > removeGrid
处从ggExtra库中找到了removeGrid函数形式的解决方案。我已经测试过它可以与ggplot2版本3.3.0和ggExtra版本0.9一起使用,从而为我提供了没有网格线的轴刻度。