【发布时间】:2021-10-01 11:06:09
【问题描述】:
我有一个关于在 ggplot 中修改轴标签的问题。我知道我想要达到的目的可以通过其他方式完成(例如,使用case_when 创建一个新列)。我的兴趣在于下面概述的方法/概念。
假设我在 x 轴上有一个离散变量。为了获得所需的轴标签,值是 1) 使用函数修改的,然后 2) 通过将命名向量中包含的值分配给函数的结果来更改。我能够单独完成这两个步骤中的每一个;但是它们如何结合起来呢?这个可以吗?
再次,我知道还有其他可能更理智的方法可以做到这一点。下面的例子没有任何实质性意义。我只是好奇是否/如何可以直接在例如scales_x_discrete 函数。下面我试图详细说明我的意思。结果将是所有Merc 标签变为Mercedes,所有Hornet 实例变为Super Hornet。
library(tidyverse)
labeller_cars <- c("Hornet"="Super Hornet",
"Merc"="Mercedes")
mtcars %>%
rownames_to_column(var = "name") %>%
filter(str_detect(name, regex("Hornet|Merc"))) %>%
ggplot()+
geom_bar(aes(x=name,
y=disp),
stat="identity")+
#here is what I am interested in; this works, but it's only first step
scale_x_discrete(labels=function(x) str_extract(x, regex("[:alpha:]*")))
#this is an attempt, but doesn't work.
# scale_x_discrete(labels=function(x) str_extract(x, regex("[:alpha:]*")) %>% labeller_cars)
由reprex package (v2.0.0) 于 2021 年 7 月 24 日创建
【问题讨论】:
标签: r ggplot2 axis-labels