假设我有一组数据,我想为我绘制的每个几何图形添加一个图例。例如:
x <- rnorm(100, 1)
qplot(x = x, y = 1:100, geom = c("point", "smooth"))
它看起来像这样:
现在,我想添加一个传奇,所以它会说:
Legend title
* points [in black]
--- smoothed [in blue]
我指定“图例标题”,“点数”和“平滑”名称。
我该怎么做?
答案 0 :(得分:2)
添加额外信息的最简单方法是使用注释而不是图例。
(我知道这是一个玩具的例子,但是当只有一种点和一种线时,ggplot通过不包括传说是明智的。你可以制作一个传奇,但它会默认占用更多的空间如果只有一种点,它的含义应该从x和y轴上的标签以及图形的一般上下文中清楚。缺少其他信息,读者将推断出line是将某些函数拟合到点上的结果。他们唯一不知道的是灰色错误区域的具体功能和含义。可以是简单的标题,注释或图表外的文本。)< / p>
#Sample data in a dataframe since that works best with ggplot
set.seed(13013)
testdf <- data.frame(x <- rnorm(100, 1),y <- 1:100)
一个选项是标题:
ggplot(testdf , aes(x = x, y = y)) + geom_point()+
stat_smooth(method="loess")+
xlab("buckshot hole distance(from sign edge)")+
ylab("speed of car (mph)")+
ggtitle("Individual Points fit with LOESS (± 1 SD)")
另一个选项是注释图层。在这里,我使用均值和最大函数来猜测文本的合理位置,但是可以使用真实数据做得更好,也可以使用像size=3
这样的参数来缩小文本大小。
ggplot(testdf , aes(x = x, y = y)) + geom_point()+
stat_smooth(method="loess")+
xlab("buckshot hole distance (from sign edge)")+
ylab("speed of car (mph)")+
annotate("text", x = max(testdf$x)-1, y = mean(testdf$y),
label = "LOESS fit with 68% CI region", colour="blue")
答案 1 :(得分:1)
注释ggplot图的快速方法是使用 geom_text
x <- rnorm(100, 1)
y = 1:100
library(ggplot2)
dat <- data.frame(x=x,y=y)
bp <- ggplot(data =dat,aes(x = x, y = y))+
geom_point()+ geom_smooth(group=1)
bp <- bp +geom_text(x = -1, y = 3, label = "* points ", parse=F)
bp <- bp +geom_text(x = -1, y = -1, label = "--- smoothed ", parse=F,color='blue')
bp