我可以使用ggplot分别控制x和y轴吗?

Dav*_*uer 14 r ggplot2

这是来自ggplot wikiggplot:

baseplot <- ggplot(data.frame(x=1:10, y=10:1)) +
    geom_point(aes(x = x, y = y))
baseplot
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

是否可以单独控制这些轴,例如仅使x轴变黑?它似乎没有,axis.line.x并且axis.line.y是选项之一.

我试过了什么

  1. 维基表明,例如,可以控制轴的颜色

    baseplot + opts(axis.line = theme_segment(colour = 'black', size = 2))
    
    Run Code Online (Sandbox Code Playgroud)

    在此输入图像描述

  2. 使用geom_segment作品,但有限制,线必须与图号匹配.

    有没有办法获得,例如轴最大值和最小值以及baseplot物体的刻度?这将减少潜在的错误.更新这个问题的答案,"不,还没有",之前已经介绍.

    baseplot + geom_segment(aes(x = c(0,0), y = c(0,0), 
                            yend = c(0, max(y)), xend = c(max(x), 0), 
                            size = c(0.5, 0.1))) + 
               geom_segment(aes(x = 0, y = y, 
                            xend = -1, 
                            yend = y, 
                            size = 0.1))
    
    Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

koh*_*ske 10

不支持单独控制轴线.您可以在绘图后删除或编辑该行:

> baseplot + opts(axis.line = theme_segment(colour = 'black', size = 2))
> grid.remove(gPath("axis_v", "axis.line.segments"), grep=TRUE)

> baseplot + opts(axis.line = theme_segment(colour = 'black', size = 2))
> grid.edit(gPath("axis_v", "axis.line.segments"), grep=TRUE, gp=gpar(col="red"))
> grid.edit(gPath("axis_h", "axis.line.segments"), grep=TRUE, gp=gpar(col="blue"))
Run Code Online (Sandbox Code Playgroud)

更新

在0.9.1-中,这可能会改变如下:

grid.edit(gPath("axis-l", "axis.line.segments"), grep=TRUE, gp=gpar(col="red"))
grid.edit(gPath("axis-b", "axis.line.segments"), grep=TRUE, gp=gpar(col="blue"))
Run Code Online (Sandbox Code Playgroud)


geo*_*ory 3

看来你也可以通过这样调整主题来轻松实现它:

mytheme <- theme_classic()
mytheme$axis.line.x <- mytheme$axis.line.y <- mytheme$axis.line
mytheme$axis.line.x$colour <- 'red'
ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + mytheme
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述