我找到了许多关于如何在R中的ggplot中将特殊字符和希腊字母插入轴标签的文档,但没有将文档颜色粘贴到轴标签中的内容。我正在创建一个稍微复杂的x轴图形,并且协作者建议在轴标签文本中使用彩色正方形(与图例相同)格式化轴,以便读者可以参考哪个轴标签指哪个数据系列。
这是图传奇目前的样子:
[ORANGE SQUARE]系列1
[BLUE SQUARE]系列2
这就是我想要的x轴标签:
以km为单位的范围[ORANGE SQUARE]或km / yr [BLUE SQUARE]
是否可以在R中进行这种图形处理,还是需要在其他图像处理软件中创建这种标签?这是我正在使用的绘图代码,带有一些假数据:
SERIES1 <- as.data.frame(sample(1:100, 100, replace=TRUE)) %>% mutate(source="SERIES1")
SERIES2 <- as.data.frame(sample(1:1000, 100, replace=TRUE)) %>% mutate(source="SERIES2")
SERIES3 <- as.data.frame(sample(1:10000, 100, replace=TRUE)) %>% mutate(source="SERIES3")
colnames(SERIES1) <- c("value","source")
colnames(SERIES2) <- c("value","source")
colnames(SERIES3) <- c("value","source")
gg_df <- rbind(SERIES1, SERIES2, SERIES3)
fig1A <- ggplot(gg_df) +
geom_density(alpha=0.5, size=0.2, aes(x=value, y=..scaled.., fill=factor(source, labels=c('SERIES1','SERIES2','SERIES3')))) +
scale_x_continuous(limits=c(0,16000), breaks=c(seq(0, 16000, by=2000))) +
labs(x='Extent (km) or (km/dec)',y='Density') +
theme_bw() +
theme(legend.position=c(0.8, 0.85), legend.title=element_blank()) +
scale_fill_brewer(type='qual',palette='Dark2')
答案 0 :(得分:1)
cowplot包具有很好的功能,可以在ggplots上进行注释
require(cowplot)
首先,在x标签上添加空格,为正方形腾出空间
fig1A <- ggplot(gg_df) +
geom_density(alpha=0.5, size=0.2, aes(x=value, y=..scaled..,
fill=factor(source, labels=c('SERIES1','SERIES2','SERIES3')))) +
scale_x_continuous(limits=c(0,16000), breaks=c(seq(0, 16000, by=2000))) +
labs(x='Extent (km) or (km/dec) ',y='Density') +
theme_bw() +
theme(legend.position=c(0.8, 0.85), legend.title=element_blank()) +
scale_fill_brewer(type='qual',palette='Dark2')
制作包含正方形的x和y位置的数据框
squares <- data.frame(x = c(0.53, 0.75), y = c(0.017,0.017))
使用牛皮图中的ggdraw
函数绘制图形,然后在其上面注释方块。与ggplot中的annotate
和geom_rect
不同,它只允许在绘图区域内进行注释,您可以使用牛皮图注释图形中的任何位置。您的方块的位置使用0 - 1比例给出,在您的图上从左到右,从下到上 - 您可能需要根据保存图形的大小来调整数字。
ggdraw(fig1A) +
geom_rect(data = squares, aes(xmin = x, xmax = x + .02,
ymin = y, ymax = y + .02),
fill = c("orange", "blue"))