[英]How I do manually change the key labels values in a legend in ggplot2?
我想知道如何更改图例框中的键标签。 我需要用值“Activo”替换值1,用世界“Inactivo”替换值2我尝试使用scale_fill_discrete
但是它不起作用
这是数据框的示例
structure(list(ZPIE = c(4109L, 4463L, 4624L, 4267L, 4569L, 4656L,
3976L, 4136L, 4139L, 4694L, 4354L, 4615L, 4183L, 4113L, 4508L,
4035L, 4443L, 4709L, 4575L, 4363L), ecd = c(0.0873015873015873,
0.779220779220779, 0.916666666666667, 0.396825396825397, 0.876984126984127,
0.961038961038961, 0.0649350649350649, 0.134920634920635, 0.285714285714286,
0.948412698412698, 0.55952380952381, 0.904761904761905, 0.337662337662338,
0.233766233766234, 0.785714285714286, 0.0198412698412698, 0.698412698412698,
0.956349206349206, 0.884920634920635, 0.579365079365079), ACTIVIDAD = structure(c(1L,
2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("1", "2"), class = "factor")), .Names = c("ZPIE",
"ecd", "ACTIVIDAD"), row.names = c(166L, 258L, 202L, 158L, 207L,
319L, 288L, 98L, 329L, 46L, 15L, 1L, 277L, 272L, 92L, 33L, 23L,
201L, 194L, 197L), class = "data.frame")
这是我写的代码来获取情节:
a <- ggplot(intactos,aes(x = ZPIE, y = ecd))+
geom_line(aes(group = ACTIVIDAD,colour = ACTIVIDAD,linetype=ACTIVIDAD),size = 1,colour="black")+
xlab("Altitud m") +
ylab("Distribucion Acumulada (%)")+
scale_x_continuous(limits=c(3500,5000),breaks=c(3500,3750,4000,4250,4500,4750,5000))+
geom_vline(aes(xintercept=4000),linetype="dashed",size = 1)+
geom_text(aes(4050,.85,label = "0°C MAAT isoterma")
,vjust=0,
,fontface= 'plain'
,colour='black'
,size=5)+
theme( plot.background = element_rect(fill="white")
,panel.background = element_rect(fill='white')
,panel.grid.major = element_line(colour = 'grey', linetype = 'dashed')
,panel.grid.minor = element_line(colour = 'white', linetype = 'dashed')
,panel.border = element_blank()
,axis.line = element_line(colour = 'black')
,axis.text.x=element_text(colour="black")
,axis.text.y=element_text(colour="black")
,panel.grid.major =element_line(colour = 'grey', linetype = 'dashed')
,legend.key=element_rect(fill="white",colour="white"),legend.position=c(0.25,0.7))
a + coord_flip()
好吧,鉴于你能分享的数据有限,很难说,但我想你可能想要下面这样的东西。 有一个修补程序,看看它是否适合你。
library(ggplot2)
library(scales)
intactos <-
structure(list(ZPIE = c(4129L, 4547L, 4448L, 4181L, 4439L, 4113L,3893L, 4275L, 4385L, 4037L), ecd = c(0.126984126984127, 0.849206349206349,0.706349206349206, 0.222222222222222, 0.69047619047619, 0.233766233766234,0.038961038961039, 0.420634920634921, 0.626984126984127, 0.0238095238095238)), .Names = c("ZPIE", "ecd"), row.names = c(79L, 200L, 132L, 102L, 219L,272L, 278L, 84L, 17L, 133L), class = "data.frame")
intactos$ACTIVIDAD <- "one"
intactos$ACTIVIDAD[6:10] <- "two"
library(reshape)
intactos.m <- melt(intactos, id.var = c("ecd", "ACTIVIDAD"))
ggplot(data = intactos.m, aes(y = value, x = ecd, group = ACTIVIDAD)) +
geom_line(aes(colour = ACTIVIDAD)) +
ylab("Altitud m") +
xlab("Distribucion Acumulada (%)\n") +
scale_y_continuous(limits = c(3500,5000),
breaks = c(3500,3750,4000,4250,4500,4750,5000))+
scale_x_continuous(limits = c(0, 1.1),
breaks = seq(0, 2, 0.1)) +
scale_colour_manual("Legend", labels = c("line one", "line two"),
values = c("blue", "red")) +
geom_hline(aes(yintercept = 4000),linetype = "dashed", size = 1)+
geom_text(data = intactos[1, ], aes(y = 4050, x = 0.85),
label = "0°C MAAT isoterma", vjust = 0, fontface = 'plain',
colour = 'black', size=5) +
theme()
谢谢你帮助Slowlearner。 我刚刚用你的评论修复了代码。 我可以使用开头的melt()
函数和scale_linetype_maunual
来修复代码到代码中。 这是新代码。
library(reshape)
intactos2 <- melt(intactos, id.var = c("ecd","ACTIVIDAD"))
a <- ggplot(intactos2,aes(y = value, x= ecd,group=ACTIVIDAD))+
geom_line(aes(colour = ACTIVIDAD,linetype=ACTIVIDAD),colour='black',size=0.5)+
scale_linetype_manual("Glaciares rocosos",
breaks=c("1","2"),
values=c("solid","dashed"),
labels = c("Activos", "Inactivos"))+
ylab("Altitud m") +
xlab("Distribucion Acumulada (%)\n")+
scale_y_continuous(limits=c(3500,5000),
breaks=c(3500,3750,4000,4250,4500,4750,5000))+
scale_x_continuous(limits = c(0.00, 1.00),
breaks = seq(0, 1, 0.1),
labels=seq(0,100,10))+
theme( plot.background = element_rect(fill="white")
,panel.background = element_rect(fill='white')
,panel.grid.major = element_line(colour = 'grey', linetype = 'dotted',size=0.5)
,panel.grid.minor = element_line(colour = 'white', linetype = 'dashed')
,panel.border = element_blank()
,axis.line = element_line(colour = 'black')
,axis.text.x=element_text(colour="black")
,axis.text.y=element_text(colour="black")
,panel.grid.major =element_line(colour = 'grey', linetype = 'dashed')
,legend.key=element_rect(fill="white",colour="white"),legend.position=c(0.3,0.8))+
geom_hline(aes(yintercept=4000),linetype="solid",size = 0.5)
a
a + annotate("text",label="0°C MAAT isoterma",x=0.8,y=4050,size=4)
这是我终于得到的情节! https://dl.dropbox.com/u/11320858/plot3.png
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.