ggplot2 交互只使用第一个字符

ggplot2 interaction use only first character

在一个项目中,我展示了条形图并使用交互命令对组进行排序,因为一个是另一个的严格子组。我不想打印出第一组的全名,因为这会占用很多 space。有没有办法将单词限制为第一个字符或类似的字符?

mtcars$name <- rownames(mtcars) 
ggplot(data = mtcars, aes(x=interaction(mtcars$cyl, mtcars$name)))+
geom_bar()+
    theme(axis.text.x = element_text(angle = 90, hjust = 1,vjust = 0.5))

例如这里只有#cylinders 对我来说很有趣,我只是用车名来订购它们。但是他们占了很多space。只写汽车的第一个字母是理想的。所以我想以 8.A 为例。在我的原始数据中,第一个变量具有不同的长度(不仅仅是 #cylinder 此处的 1 个字符)

感谢您的回答, 此致

您可以在 scale_x_discrete 中使用正则表达式编辑标签:

library(ggplot2)

ggplot(data = mtcars, aes(x=interaction(mtcars$cyl, mtcars$name)))+
  geom_bar()+
  xlab('Interaction cyl vs Name') + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1,vjust = 0.5)) + 
  scale_x_discrete(labels = function(x) sub('(\..).*', '\1', x))

() 中的所有内容都称为捕获组,我们在其中指定要保留的文本部分。在这里,我们提到我们想要保留所有内容,直到一个点(即 \.. 是正则表达式中的一个特殊字符,需要使用 \ 进行转义)后跟另一个字符(.).