[英]insert legend color square into r ggplot axis label
我已经找到了很多很棒的文档,关于如何在R的ggplot中将特殊字符和希腊字母插入到轴标签中,但是没有将图例颜色粘贴到轴标签中的内容。 我正在创建一个带有稍微复杂的x轴的图形,并且协作者建议在轴标签文本中使用彩色正方形(与图例相同)格式化轴,以便读者可以参考哪个轴标签引用了哪个数据系列。
这是当前图例的外观:
[橙色广场]系列1
[BLUE SQUARE]系列2
这就是我希望x轴标签看起来像的样子:
范围,以公里[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')
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
中的ggdraw
函数绘制图形,然后在其顶部注释正方形。 与geom_rect
中的annotate
和geom_rect
(仅允许在绘图区域内进行注释)不同,您可以使用Cowplot在图形上的任何位置进行注释。 正方形的位置是使用0-1比例给出的,该比例从绘图的左到右,从下到上-您可能必须根据将图形另存为多大的大小来调整数字。
ggdraw(fig1A) +
geom_rect(data = squares, aes(xmin = x, xmax = x + .02,
ymin = y, ymax = y + .02),
fill = c("orange", "blue"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.