ggplot2 手册图例不显示
ggplot2 manual legend not displaying
我在网上苦苦搜索了为什么我不能在我的 ggplot2 中添加图例。
g.2plot1<-ggplot(input_csv,aes(x=R_OD_MONTH,y=DAMWAMT))+
geom_line(colour = "black")+
geom_line(aes(x=R_OD_MONTH,y = SCALED_PERCENT_MW), colour = "blue") +
scale_colour_manual(name="Legend", values = c("black", "blue")) +
scale_linetype_manual(name="Legend", values = c("dashed", "dotted"))
g.2plot1
当我这样做时,我什么也没得到,控制台中没有错误,情节上也没有图例。有人能告诉我我哪里错了吗?
dput(head(input_csv))
structure(list(OD_MONTH = c("12/1/2010", "1/1/2011", "2/1/2011",
"3/1/2011", "4/1/2011", "5/1/2011"), DAMWAMT = c(219869.89, 214323.24,
193976.03, 249174.62, 213529.32, 226318.98), NB_MADE_WHOLE = c(39L,
37L, 26L, 45L, 74L, 64L), NB_CONSID_MW = c(818L, 871L, 874L,
831L, 1060L, 1418L), PERCENT_MW = c(0.0404, 0.048, 0.0371, 0.0616,
0.0604, 0.0525), SCALED_PERCENT_MW = c(151898.635570388, 183223.057973301,
138297.241632282, 239277.287536408, 234331.326104369, 201770.413343447
), R_OD_MONTH = structure(c(14944, 14975, 15006, 15034, 15065,
15095), class = "Date")), .Names = c("OD_MONTH", "DAMWAMT", "NB_MADE_WHOLE",
"NB_CONSID_MW", "PERCENT_MW", "SCALED_PERCENT_MW", "R_OD_MONTH"
), row.names = c(NA, 6L), class = "data.frame")
传说是为了审美而画的。由于 colour
在您的情况下不是美学,因此没有传说。诀窍是将数据从宽格式(每种类型的数据都有自己的列)转换为长格式(其中有一列指示数据类型,一列给出相应的值)。这是按如下方式完成的:
library(reshape2)
plot.data <- melt(input_csv,
id="R_OD_MONTH",measure=c("DAMWAMT","SCALED_PERCENT_MW"))
melt
returns 一个长格式的数据框,其中列指示名为 variable
的数据类型,列的值为 value
.
现在您可以让 ggplot 通过将列 variable
映射到颜色来选择颜色:
ggplot(plot.data,aes(x=R_OD_MONTH,y=value,colour=variable)) + geom_line() +
labs(title="My plot",x="x-axis",y="y-axis",colour="colours") +
scale_colour_discrete(labels=c("this","that"))
最后两行显示如何添加绘图标题、更改轴标签和图例标题 (labs()
) 以及更改图例中的标签 (scale_colour_discrete
)。
我在网上苦苦搜索了为什么我不能在我的 ggplot2 中添加图例。
g.2plot1<-ggplot(input_csv,aes(x=R_OD_MONTH,y=DAMWAMT))+
geom_line(colour = "black")+
geom_line(aes(x=R_OD_MONTH,y = SCALED_PERCENT_MW), colour = "blue") +
scale_colour_manual(name="Legend", values = c("black", "blue")) +
scale_linetype_manual(name="Legend", values = c("dashed", "dotted"))
g.2plot1
当我这样做时,我什么也没得到,控制台中没有错误,情节上也没有图例。有人能告诉我我哪里错了吗?
dput(head(input_csv))
structure(list(OD_MONTH = c("12/1/2010", "1/1/2011", "2/1/2011",
"3/1/2011", "4/1/2011", "5/1/2011"), DAMWAMT = c(219869.89, 214323.24,
193976.03, 249174.62, 213529.32, 226318.98), NB_MADE_WHOLE = c(39L,
37L, 26L, 45L, 74L, 64L), NB_CONSID_MW = c(818L, 871L, 874L,
831L, 1060L, 1418L), PERCENT_MW = c(0.0404, 0.048, 0.0371, 0.0616,
0.0604, 0.0525), SCALED_PERCENT_MW = c(151898.635570388, 183223.057973301,
138297.241632282, 239277.287536408, 234331.326104369, 201770.413343447
), R_OD_MONTH = structure(c(14944, 14975, 15006, 15034, 15065,
15095), class = "Date")), .Names = c("OD_MONTH", "DAMWAMT", "NB_MADE_WHOLE",
"NB_CONSID_MW", "PERCENT_MW", "SCALED_PERCENT_MW", "R_OD_MONTH"
), row.names = c(NA, 6L), class = "data.frame")
传说是为了审美而画的。由于 colour
在您的情况下不是美学,因此没有传说。诀窍是将数据从宽格式(每种类型的数据都有自己的列)转换为长格式(其中有一列指示数据类型,一列给出相应的值)。这是按如下方式完成的:
library(reshape2)
plot.data <- melt(input_csv,
id="R_OD_MONTH",measure=c("DAMWAMT","SCALED_PERCENT_MW"))
melt
returns 一个长格式的数据框,其中列指示名为 variable
的数据类型,列的值为 value
.
现在您可以让 ggplot 通过将列 variable
映射到颜色来选择颜色:
ggplot(plot.data,aes(x=R_OD_MONTH,y=value,colour=variable)) + geom_line() +
labs(title="My plot",x="x-axis",y="y-axis",colour="colours") +
scale_colour_discrete(labels=c("this","that"))
最后两行显示如何添加绘图标题、更改轴标签和图例标题 (labs()
) 以及更改图例中的标签 (scale_colour_discrete
)。