我正在寻找类似的东西。就我而言,我在x轴上有6个不同的标签 - 让它成为" 1月"," 2月"," 6月"," 7月& #34;和"九月","十月"。正如您所看到的,2个月总是可以分为一个季节:"冬天","夏天"和"秋天"。我有六个值(每月一个),让它成为温度。现在我的x-Axis有6个刻度和标签。但是,我想在第二个轴上添加" Winter"出现在" 1月"和"二月"等等。 关于它如何起作用的任何想法?
到目前为止,这是我的代码:
p1 <- ggplot(df, aes(colour=group, y= temperature, x= month))
p1 <- p1 + geom_point(aes(shape=c("15", "15", "16", "16", "17", "17")),size = 1.5)+
geom_errorbar(limits2, width=0.1, size = 0.5) +
scale_y_continuous(limits=c(0,5), name = "Temperature")+
theme(axis.title.y = element_text(vjust=0.4))+
scale_x_discrete(name = "MONTH", labels=c("January", "February", "June", "July", "September", "October"))+
theme(axis.title.x = element_text(vjust=-0.2))
p1
非常感谢!
答案 0 :(得分:1)
这是在主图和轴标签下添加文本的一种不太优雅的方式。由于我没有原始数据,让我举例说明使用“mtcars”数据:
library(ggplot2)
library(gridExtra)
(g0 <- ggplot(mtcars, aes(gear, mpg, colour=factor(am))) + geom_point(size=4) +
theme(plot.margin = unit(c(1,1,3,1), "cm")))
Text1 <- textGrob("Spring")
Text2 <- textGrob("Summer")
Text3 <- textGrob("Fall")
(g1 <- g0 + annotation_custom(grob = Text1, xmin = 3, xmax = 3, ymin = 5, ymax = 5) +
annotation_custom(grob = Text2, xmin = 4, xmax = 4, ymin = 5, ymax = 5) +
annotation_custom(grob = Text3, xmin = 5, xmax = 5, ymin = 5, ymax = 5))
gg_table <- ggplot_gtable(ggplot_build(g1))
gg_table$layout$clip[gg_table$layout$name=="panel"] <- "off"
grid.draw(gg_table)
您可以调整ymin和xmin值以移动文本。
如果要将gg_table
保存为grob,则需要使用arrangeGrob()
和“克隆ggsave并绕过类检查”(根据the answer to a similar question):
g <- arrangeGrob(gg_table)
ggsave <- ggplot2::ggsave
body(ggsave) <- body(ggplot2::ggsave)[-2]
ggsave(file="./figs/figure.png", g)