ggplot2:缺少图例以及如何添加?
ggplot2: missing legend and how to add?
我想根据数据框绘制条形图和折线图。下面的代码,
library("ggplot2")
numb <- c(1,2,3,4,5,6,7,8,9)
mydist <- c(53.846154,15.384615,15.384615,7.692308,7.692308,0,0,0,0)
basedist <- c(30.103,17.609126,12.493874,9.691001,7.918125,6.694679,5.799195,5.115252,4.575749)
df <- data.frame(numb, mydist, basedist)
ggplot(data=df,aes(x=numb)) +
geom_bar(stat="identity", aes(y=mydist), colour="green", fill="green") +
geom_line(aes(y=basedist,group=1, colour="base distribution")) +
geom_point(aes(y=basedist), colour="red") +
ggtitle("My Chart") +
labs(x="numb", y="percentage") +
scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9")) +
scale_y_continuous(breaks=seq(0,100,10)) +
theme(axis.title.x = element_text(size=10, colour ="#666666")) +
theme(axis.title.y = element_text(size=10, color="#666666")) +
theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666")) +
theme(axis.text = element_text(size=12)) +
theme(legend.title = element_text(colour="white", size = 16, face='bold'))
结果不是我想要的,因为没有条形图例
我用下面 Excel 中的相同数据集复制了我需要的图表,
我需要更改我的代码什么才能获得我需要的图表?
谢谢,
大堂
这是一个简单的例子。一般来说,我会建议您重新格式化 ggplot() 赋值以使调试更容易。即 gp <- gp +
gp <- ggplot(data=df, aes(x=numb))
gp <- gp + geom_bar( aes(y = mydist, fill = "green"), stat="identity", color="green")
gp <- gp + geom_line( aes( y = basedist, group = 1, colour = "base distribution"))
gp <- gp + scale_fill_manual(values = "green", labels = "my distribution")
gp <- gp + geom_point(aes(y=basedist), colour="red")
gp <- gp + ggtitle("My Chart")
gp <- gp + labs(x="numb", y="percentage")
gp <- gp + scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9"))
gp <- gp + scale_y_continuous(breaks=seq(0,100,10))
gp <- gp + theme(axis.title.x = element_text(size=10, colour ="#666666"))
gp <- gp + theme(axis.title.y = element_text(size=10, color="#666666"))
gp <- gp + theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666"))
gp <- gp + theme(axis.text = element_text(size=12))
gp <- gp + theme(legend.title = element_text(colour="white", size = 16, face='bold'))
gp <- gp + theme(legend.key = element_blank(), legend.title=element_blank(), legend.box ="vertical")
gp
无需改动太多原始代码,只需将 fill
放入 aes
映射,然后添加 scale
设置颜色 values
和labels
:
ggplot(data=df,aes(x=numb)) +
geom_bar(stat="identity", aes(y=mydist, fill="green"), colour="green") +
geom_line(aes(y=basedist,group=1, colour="base distribution")) +
geom_point(aes(y=basedist), colour="red") +
ggtitle("My Chart") +
labs(x="numb", y="percentage") +
scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9")) +
scale_y_continuous(breaks=seq(0,100,10)) +
scale_fill_manual(values = "green", labels = "my distribution") +
theme(axis.title.x = element_text(size=10, colour ="#666666")) +
theme(axis.title.y = element_text(size=10, color="#666666")) +
theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666")) +
theme(axis.text = element_text(size=12)) +
theme(legend.title = element_text(colour="white", size = 16, face='bold'))
我想根据数据框绘制条形图和折线图。下面的代码,
library("ggplot2")
numb <- c(1,2,3,4,5,6,7,8,9)
mydist <- c(53.846154,15.384615,15.384615,7.692308,7.692308,0,0,0,0)
basedist <- c(30.103,17.609126,12.493874,9.691001,7.918125,6.694679,5.799195,5.115252,4.575749)
df <- data.frame(numb, mydist, basedist)
ggplot(data=df,aes(x=numb)) +
geom_bar(stat="identity", aes(y=mydist), colour="green", fill="green") +
geom_line(aes(y=basedist,group=1, colour="base distribution")) +
geom_point(aes(y=basedist), colour="red") +
ggtitle("My Chart") +
labs(x="numb", y="percentage") +
scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9")) +
scale_y_continuous(breaks=seq(0,100,10)) +
theme(axis.title.x = element_text(size=10, colour ="#666666")) +
theme(axis.title.y = element_text(size=10, color="#666666")) +
theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666")) +
theme(axis.text = element_text(size=12)) +
theme(legend.title = element_text(colour="white", size = 16, face='bold'))
结果不是我想要的,因为没有条形图例
我用下面 Excel 中的相同数据集复制了我需要的图表,
我需要更改我的代码什么才能获得我需要的图表?
谢谢, 大堂
这是一个简单的例子。一般来说,我会建议您重新格式化 ggplot() 赋值以使调试更容易。即 gp <- gp +
gp <- ggplot(data=df, aes(x=numb))
gp <- gp + geom_bar( aes(y = mydist, fill = "green"), stat="identity", color="green")
gp <- gp + geom_line( aes( y = basedist, group = 1, colour = "base distribution"))
gp <- gp + scale_fill_manual(values = "green", labels = "my distribution")
gp <- gp + geom_point(aes(y=basedist), colour="red")
gp <- gp + ggtitle("My Chart")
gp <- gp + labs(x="numb", y="percentage")
gp <- gp + scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9"))
gp <- gp + scale_y_continuous(breaks=seq(0,100,10))
gp <- gp + theme(axis.title.x = element_text(size=10, colour ="#666666"))
gp <- gp + theme(axis.title.y = element_text(size=10, color="#666666"))
gp <- gp + theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666"))
gp <- gp + theme(axis.text = element_text(size=12))
gp <- gp + theme(legend.title = element_text(colour="white", size = 16, face='bold'))
gp <- gp + theme(legend.key = element_blank(), legend.title=element_blank(), legend.box ="vertical")
gp
无需改动太多原始代码,只需将 fill
放入 aes
映射,然后添加 scale
设置颜色 values
和labels
:
ggplot(data=df,aes(x=numb)) +
geom_bar(stat="identity", aes(y=mydist, fill="green"), colour="green") +
geom_line(aes(y=basedist,group=1, colour="base distribution")) +
geom_point(aes(y=basedist), colour="red") +
ggtitle("My Chart") +
labs(x="numb", y="percentage") +
scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9")) +
scale_y_continuous(breaks=seq(0,100,10)) +
scale_fill_manual(values = "green", labels = "my distribution") +
theme(axis.title.x = element_text(size=10, colour ="#666666")) +
theme(axis.title.y = element_text(size=10, color="#666666")) +
theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666")) +
theme(axis.text = element_text(size=12)) +
theme(legend.title = element_text(colour="white", size = 16, face='bold'))