ggplot2 - 两个数据集图例问题的线和点图
ggplot2 - Graph with line and dots for two data sets legend issues
我正在使用 ggplot 绘制两个数据集。一个应该是一条线,另一个应该是点。我可以按如下方式进行操作:
d1 <- filter(d, variable==lineVar)
d2 <- filter(d, variable==dotVar)
g <- ggplot(d1, aes(clarity, x=xv, y=yv))
g <- g + geom_line(aes(colour=variable))
g <- g + ggtitle(title)
g <- g + xlab(xl)
g <- g + ylab(yl)
g <- g + geom_point(data=d2, size=4, aes(colour=variable))
唯一的问题是图例!如您所见,"observed" 数据集在图例中有一条线+一个点,而实际上它应该只是一个点。反过来 "predicted",它应该只是一条线。
有什么方法可以获得更清晰/更准确的图例?
您可以使用 override.aes
在不更改情节的情况下更改图例。您没有提供示例数据,因此我使用内置的 mtcars
数据框进行说明。关键代码行以guides
开头。 shape=c(16,NA)
通过将其颜色设置为 NA
摆脱了图例的点标记之一。 linetype=c(0,1)
通过将其线型设置为 0
来摆脱另一个图例的线。此外,您不需要在每行代码之后保存绘图。只需在每一行中添加一个 +
并将它们全部串在一条语句中,如下例所示。
library(reshape2)
library(ggplot2)
mtcars$mpg.line = mtcars$mpg
mtcars.m = melt(mtcars[,c("mpg","mpg.line","wt")], id.var="wt")
mtcars.m$variable = factor(mtcars.m$variable)
ggplot() +
geom_line(data=mtcars.m[mtcars.m$variable=="mpg.line",],
aes(wt, value, colour=variable), lwd=1) +
geom_point(data=mtcars.m[mtcars.m$variable=="mpg",],
aes(wt, value, colour=variable), size=3) +
guides(colour=guide_legend(override.aes=list(shape=c(16,NA), linetype=c(0,1)))) +
theme_grey(base_size=15)
我正在使用 ggplot 绘制两个数据集。一个应该是一条线,另一个应该是点。我可以按如下方式进行操作:
d1 <- filter(d, variable==lineVar)
d2 <- filter(d, variable==dotVar)
g <- ggplot(d1, aes(clarity, x=xv, y=yv))
g <- g + geom_line(aes(colour=variable))
g <- g + ggtitle(title)
g <- g + xlab(xl)
g <- g + ylab(yl)
g <- g + geom_point(data=d2, size=4, aes(colour=variable))
唯一的问题是图例!如您所见,"observed" 数据集在图例中有一条线+一个点,而实际上它应该只是一个点。反过来 "predicted",它应该只是一条线。
有什么方法可以获得更清晰/更准确的图例?
您可以使用 override.aes
在不更改情节的情况下更改图例。您没有提供示例数据,因此我使用内置的 mtcars
数据框进行说明。关键代码行以guides
开头。 shape=c(16,NA)
通过将其颜色设置为 NA
摆脱了图例的点标记之一。 linetype=c(0,1)
通过将其线型设置为 0
来摆脱另一个图例的线。此外,您不需要在每行代码之后保存绘图。只需在每一行中添加一个 +
并将它们全部串在一条语句中,如下例所示。
library(reshape2)
library(ggplot2)
mtcars$mpg.line = mtcars$mpg
mtcars.m = melt(mtcars[,c("mpg","mpg.line","wt")], id.var="wt")
mtcars.m$variable = factor(mtcars.m$variable)
ggplot() +
geom_line(data=mtcars.m[mtcars.m$variable=="mpg.line",],
aes(wt, value, colour=variable), lwd=1) +
geom_point(data=mtcars.m[mtcars.m$variable=="mpg",],
aes(wt, value, colour=variable), size=3) +
guides(colour=guide_legend(override.aes=list(shape=c(16,NA), linetype=c(0,1)))) +
theme_grey(base_size=15)