将x轴标签放在旋转图形ggplot2 r的内侧

问题描述 投票:0回答:1

我已经在ggplot2中创建了一个情节,并想知道是否有任何方法可以将x轴LABELS放置在绘图的内部,因为它会整理它很多,我无法解决这个命令的位置将会。下面的代码和图,任何帮助非常感谢!谢谢!

ggplot(gen, aes(Genera, y = Depth.occurred)) +
  geom_boxplot() +
  scale_x_discrete(position = "top") +
  labs(x = "Genera", y = "Depth (m)") +
  scale_y_reverse(breaks = seq(0, 90, by = 10)) +
  theme_bw() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  theme(axis.title.y = element_text(face="bold", size = 12)) +
  theme(axis.title.x = element_text(face="bold", size = 12)) +
  geom_hline(yintercept=30, linetype="dashed", color = "red") +
  theme(axis.ticks.x=element_blank()) +
  stat_n_text(size = 3, y.pos = 1, fontface = "italic") +
  theme(panel.border = element_blank()) +
  theme(axis.line = element_line(colour = "black")) +
  theme(axis.text.x = element_text(size = 9, vjust = 1)) 

在这里创建的情节:plot

使用下面的第一种方法更新绘图(y位置编辑)但在某些标签updated plot上有奇怪的字体

r plot ggplot2
1个回答
0
投票

我不知道在常规ggplot表达式中设置轴标签的方法,因为我没有在主题上看到选项,但您可以只是抑制x轴文本标签,并在绘图中添加x轴标签作为geom_text

# what you have so far minus theme(axis.text.x), and combining theme elements

gg <- ggplot(gen, aes(Genera, y = Depth.occurred)) +
  geom_boxplot() +
  geom_hline(yintercept=30, linetype="dashed", color = "red") +
  stat_n_text(size = 3, y.pos = 1, fontface = "italic") +
  labs(x = "Genera", y = "Depth (m)") +
  scale_x_discrete(position = "top") +
  scale_y_reverse(breaks = seq(0, 90, by = 10)) +
  theme_bw() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        axis.title.y = element_text(face="bold", size = 12), 
        axis.title.x = element_text(face="bold", size = 12),
        axis.ticks.x=element_blank(),
        axis.line = element_line(colour = "black"))

gg + theme(axis.text.x = element_blank()) +
  geom_text(aes(x=Genera, y=2, label=Genera))

或者你可以获得你的情节ylims并使用一些微调因子将geom_text y值设置为y max,因为看起来你的n也打印在y.pos = 1

# y-range
gg_yrange <- ggplot_build(gg)$layout$panel_ranges[[1]]$y.range

gg + theme(axis.text.x = element_blank()) +
  geom_text(aes(x=Genera, y=p_yrange[1]-2, label=Genera))
© www.soinside.com 2019 - 2024. All rights reserved.