在ggplot2中访问现有图的轴刻度矢量

Söl*_*lvi 7 r ggplot2

我想在ggplot中的现有图中获得轴刻度值的向量.我知道ggplot对象是一个包含9个元素的列表,我想知道我是否可以从该列表中提取轴刻度的值.例如,如果我生产这个玩具示例:

library(ggplot2)
g=ggplot(data=mtcars,aes(hp,mpg))+geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 我想要的是矢量

 c(100,200,300)
 c(10,15,20,25,30,35)
Run Code Online (Sandbox Code Playgroud)

对于x刻度和y刻度分别为w

有办法吗?

非常感谢!

Jot*_*ota 10

这些值可以在中找到

ggbld <- ggplot_build(g)
ggbld$panel$ranges[[1]]$x.major_source
#[1] 100 200 300
Run Code Online (Sandbox Code Playgroud)

ggbld$panel$ranges[[1]]$y.major_source
#[1] 10 15 20 25 30 35
Run Code Online (Sandbox Code Playgroud)

它们也可以在这里存储为字符:

ggbld$panel$ranges[[1]]$x.labels
#[1] "100" "200" "300"
ggbld$panel$ranges[[1]]$y.labels
#[1] "10" "15" "20" "25" "30" "35"
Run Code Online (Sandbox Code Playgroud)

更新:

以上内容不适用于ggplot2_3.0.0,但仍可以使用以下命令找到该信息:

ggbld <- ggplot_build(g)
ggbld$layout$coord$labels(ggbld$layout$panel_params)[[1]]$x.major_source
ggbld$layout$coord$labels(ggbld$layout$panel_params)[[1]]$x.labels
Run Code Online (Sandbox Code Playgroud)

  • @Jota显然,ggplot结构有所改变。为了获得面板范围,我不得不使用ggplot_build(g)$ layout $ panel_ranges [[1]] $ x.major_source`。上面的命令返回NULL。 (2认同)
  • @ zx8754嗯,也许有更好的方法,但你可以使用`ggplot_build(g)$ layout $ coord $ labels(ggplot_build(g)$ layout $ panel_params)[[1]] $ x.major_source`或`ggplot_build(g )$ $布局坐标$标签(ggplot_build(克)$ $布局panel_params)[[1]] $ x.labels` (2认同)