需要支持格式化x轴组标签不重叠

时间:2014-11-04 17:41:16

标签: r ggplot2 boxplot graphing

我使用ggplot2包创建了R中某些数据的缺口框图。我有一个问题是x轴元素文本使我的组的标签重叠,这是我不想要的。

我也不想旋转标签。我希望每个标签都是水平书写的,但要继续在一个单独的标签上。线。所以(例如)标签石炭纪Lst的两个词。出现两个单词,第二个单词' Limestone'水平地写在石炭纪下面。我无法减小字体大小,因为它将难以阅读。

是否有人知道R&#39的ggplot中是否有命令可以解决这个问题?

很多,非常感谢

达米亚诺

PS:我目前的代码是:

box <- ggplot(AquiProps, aes(Geology, logTRANS))

box + geom_boxplot(notch = TRUE) 
    + labs(x = "", y = "Mean log Transmissivity(m2/d)") 
    + theme(axis.title = element_text(face = "bold", size = "12", color = "black"),
            axis.text = element_text(size = 10, face = "bold", color = "black"),
            axis.title.y = element_text(vjust = 1), 
            axis.title.x = element_text(vjust = 0.005))

我想我需要在axis.title.x = element_text命令中更改一些内容?!?!

2 个答案:

答案 0 :(得分:4)

喜欢这个吗?

# create example
set.seed(1)
names <- paste("Carboniferous Species:",1:8)
df <- data.frame(names=rep(names,each=100),values=rnorm(800))

library(ggplot2)
ggplot(df,aes(x=names,y=values))+
  geom_boxplot(notch=TRUE)+
  scale_x_discrete(labels=gsub("(Carboniferous)","\\1\n",unique(df$names)))+
  theme(axis.title = element_text(face = "bold", size = "12", color = "black"),
        axis.text = element_text(size = 10, face = "bold", color = "black"),
        axis.title.y = element_text(vjust = 1), 
        axis.title.x = element_text(vjust = 0.005))

上面的代码使用scale_x_discrete(labels=...)将换行符插入轴标签。

您也可以使用例如:

将换行符直接插入数据中
df$names <- gsub("(Carboniferous)","\\1\n",df$names)

然后您编写的代码将生成上面的相同图。

答案 1 :(得分:0)

这是一个古老的问题,但是自ggplot 3.3.0起,很容易解决。

您可以在guide = guide_axis(n.dodge = 2)内使用参数scale_x_discrete

library(tidyverse)

set.seed(1)
names <- paste("Carboniferous Species:",1:8)
df <- data.frame(names=rep(names,each=100),values=rnorm(800))

ggplot(df,aes(x=names,y=values))+
  geom_boxplot(notch=TRUE)+
  scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
  theme(axis.title = element_text(face = "bold",
                                  size = "12",
                                  color = "black"),
        axis.text = element_text(size = 10,
                                 face = "bold",
                                 color = "black"),
        axis.title.y = element_text(vjust = 1), 
        axis.title.x = element_text(vjust = 0.005))

结果: enter image description here