R语言 用ggplot为多线图添加图例
在这篇文章中,我们将看到如何用R编程语言中的ggplot为多线图添加图例。
对于一个包含多个线段图的图,如果使用col属性,默认会创建一个图例。所有对线段图的外观所做的改变也会反映在图例中。
语法: ggplot(df, aes(x, y, col=”要区分的列的名称”))
让我们先来看看曲线在默认情况下是如何显示的。
例子: 默认图
library("ggplot2")
function1<- function(x){x**2}
function2<-function(x){x**3}
function3<-function(x){x/2}
function4<-function(x){2*(x**3)+(x**2)-(x/2)}
df=data.frame(x=-2:2,
values=c(function1(-2:2),
function2(-2:2),
function3(-2:2),
function4(-2:2)),
fun=rep(c("function1","function2","function3","function4"))
)
ggplot(df,aes(x,values,col=fun))+geom_line()
输出
对线条所做的各种改变也会出现在图例中,让我们来看看是怎样的。
改变颜色
默认情况下,要改变颜色,将产生上述图谱,现在假设我们要手动为线条添加颜色,为此可以使用任何一个给定的函数–scale_color_manual(), scale_color_brewer(), 和scale_color_grey()。
例子:改变线条的颜色
library("ggplot2")
function1<- function(x){x**2}
function2<-function(x){x**3}
function3<-function(x){x/2}
function4<-function(x){2*(x**3)+(x**2)-(x/2)}
df=data.frame(x=-2:2,
values=c(function1(-2:2),
function2(-2:2),
function3(-2:2),
function4(-2:2)),
fun=rep(c("function1","function2",
"function3","function4"))
)
ggplot(df,aes(x,values,col=fun))+geom_line()+
scale_color_manual(values=c("green","yellow","red","grey"))
输出
改变线条粗细
为此,尺寸属性被用于一个特定的值。这些变化也将反映在图例中。
例子
library("ggplot2")
function1<- function(x){x**2}
function2<-function(x){x**3}
function3<-function(x){x/2}
function4<-function(x){2*(x**3)+(x**2)-(x/2)}
df=data.frame(x=-2:2,
values=c(function1(-2:2),
function2(-2:2),
function3(-2:2),
function4(-2:2)),
fun=rep(c("function1","function2",
"function3","function4"))
)
ggplot(df,aes(x,values,col=fun))+geom_line(size=3)
输出
改变线型
图形的线型可以通过任何一个给定的函数-scale_linetype_manual(),或者通过使用linetype关键字默认改变。
例子
library("ggplot2")
function1<- function(x){x**2}
function2<-function(x){x**3}
function3<-function(x){x/2}
function4<-function(x){2*(x**3)+(x**2)-(x/2)}
df=data.frame(x=-2:2,
values=c(function1(-2:2),
function2(-2:2),
function3(-2:2),
function4(-2:2)),
fun=rep(c("function1","function2",
"function3","function4"))
)
ggplot(df,aes(x,values, group=fun, color=fun, linetype=fun))+
geom_line(size=1)+
scale_linetype_manual(values = c("solid","dotted","dashed","twodash"))+
scale_color_manual(values=c("red","green","blue","black"))
输出