传说中的ggplot2

时间:2015-02-20 07:27:47

标签: r ggplot2

我试图了解在R中使用ggplot2时如何更改图例中的标题和标签。我在网上搜索试图找到答案,似乎我需要在scale_xxx_yyy命令中使用某种程度上,但我似乎无法做到这一点。一个简单的例子:

x <- rnorm(100)

dens1 <- density(x, 0.1, kernel = "rectangular")
dens2 <- density(x, 0.1, kernel = "gaussian")

df <- data.frame(x = dens1$x, y1 = dens1$y, y2 = dens2$y)

pl <- ggplot(df, aes(x)) + geom_line(aes(y=y1, colour = "y1")) + geom_line(aes(y=y2, colour = "y2"))
pl + scale_fill_discrete(name="Kernels", breaks=c("y1", "y2"), labels=c("Rectangular", "Gaussian"))

我希望传奇有标题&#34; Kernels&#34;和标签&#34;矩形&#34;和&#34;高斯&#34;,但没有任何反应。我还尝试了其他地方建议的scale_linetype_discrete(name = "Kernels")labs(linetype="Kernels"),但仍然没有。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个。正如@Pascal所说,scale_color_discrete是适合你的。我想你ggplot2越多,你就越习惯scale_xxx_yyy业务。 @ A.Val建议的食谱是一本很棒的书。以下是the link

library(dplyr)
library(tidyr)
library(ggplot2)

df <- data.frame(x = dens1$x, y1 = dens1$y, y2 = dens2$y) %>%
      gather(variable, value, - x)

ggplot(df, aes(x = x, y = value, color = variable)) +
geom_line() +
scale_color_discrete(name = "Kernels", breaks=c("y1", "y2"), labels =c("Rectangular", "Gaussian"))

enter image description here