将geom_point添加到R中的特定行

时间:2018-10-04 02:35:14

标签: r ggplot2 plot

我有3个变量,已使用以下代码和以下示例数据进行了绘制。您会注意到geom_point将点添加到图形上的所有线。但是我有兴趣仅将点添加到蓝线。

fitting <- read_excel("Data.xlsx")
fitting$Month=dates
b=fitting

library(reshape2)

#dat<- as.data.frame(lapply(dat,as.character),stringsAsFactors=F)

datnew1 <- melt(b, id = c("Month"))

# datnew1$Month <-factor(datnew1$Month,
#                        levels = c("Jan","Feb","Mar",
#                                   "Apr","May","Jun",
#                                   "Jul","Aug","Sep",
#                                   "Oct","Nov","Dec"))

a=as.numeric(as.character(datnew1$value))
#a=a*0.001 
datnew1$value=a

#datnew1$value=as.numeric(as.character(levels(datnew1$value)))[as.numeric(as.character(datnew1$value))]
head(datnew1)
#ggplot(WFDEImrb, aes(date, value,group = 1))+ geom_line(size=3)

library(ggplot2)

red.bold.italic.text <- element_text(face = "plain", color = "black",size = 15)
blue.bold.italic.16.text <- element_text(face = "plain", color = "black", size = 15)

#datnew1$value=as.numeric(as.character(levels(datnew1$value)))[datnew1$value]
min(a,na.rm = T)
max(a,na.rm = T)


r=ggplot(datnew1,aes(Month, value,group=variable)) + 
 geom_line(aes(colour = variable),size=1.6)+scale_x_date(breaks = seq(as.Date("1979-01-01"), as.Date("2016-12-31"), by="5 years"), 
                                                         labels=date_format("%Y"))+theme(legend.position = "right")+
 geom_point()+

 scale_y_continuous(limits=c(230,265),breaks = seq(230,265, by = 5))+ylab(bquote('Mean ( '*W~m^-1*')')) + xlab("Year")+
 theme(legend.title = element_text(colour="black", size=15, face="plain"))+
 theme(legend.text = element_text(colour="black", size = 15, face = "plain"))+
 theme(title = red.bold.italic.text, axis.title = red.bold.italic.text)+
 theme(strip.text.x = element_text(size=15, color="black",face="plain"))+
 theme(axis.text = blue.bold.italic.16.text)+
 theme(axis.text.x  = element_text(angle=0, vjust=0.5, size=15))+
 scale_color_manual(name="Data/Time slice",values=c("blue","#e41a1c","#4daf4a"))+guides(fill=FALSE, color=FALSE)
r=r+ ylab(expression(atop("Mean", paste("long (", W~m^-2, ")", sep = ""))))
r

我只想将geom_point添加到blue行中。这是示例数据。

datnew1=c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 253.069836096945, 
253.02522410221, 249.527552374702, 247.149507892246, 251.219005399477, 
259.441841529417, 255.253699670141, 256.066804950768, 253.667433595526, 
250.839089177907, 255.65047400176, 260.285933722204, 244.414166666667, 
249.030833333333, 253.181666666667, 239.763333333333, 245.9625, 
247.5425, 244.940833333333, 247.369166666667, 254.201666666667, 
251.303333333333, 247.586666666667, 244.5325, 250.035833333333, 
247.1725, 251.848333333333, 248.216666666667, 249.075833333333, 
243.748333333333, 251.664166666667, 255.225833333333, 252.405, 
248.493333333333, 251.855833333333, 248.3475, 250.3275, 245.896666666667, 
255.474166666667, 251.641666666667, 250.876666666667, 248.056666666667, 
245.868333333333, 253.16, 250.836666666667, 250.9, 251.665, 248.055, 
253.978333333333, 258.634166666667, 246.704166666667, 251.450833333333, 
254.476666666667, 242.6325, 247.925, 249.835833333333, 246.9725, 
249.6875, 255.678333333333, 253.899166666667, 249.54, 246.91, 
252.121666666667, 249.403333333333, 253.5875, 250.5225, 251.0425, 
246.606666666667, 253.500833333333, 257.1425, 254.6925, 250.860833333333, 
253.9275, 250.244166666667, 252.589166666667, 248.346666666667, 
257.211666666667, 253.91, 253.0625, 250.150833333333, 248.406666666667, 
255.160833333333, 252.7275, 253.416666666667, 253.626666666667, 
250.260833333333, 256.044166666667, 260.575833333333)

关于如何完成此任务的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以为这些点创建shape美观度,并为不需要绘制的点将形状设置为NA。您的代码有很多无关紧要的内容,因此,我将使用内置的mtcars数据框提供一个示例。

ggplot(mtcars, aes(mpg, wt, shape=factor(cyl), colour=factor(cyl))) + 
  geom_line() + 
  geom_point(size=3, show.legend=FALSE) +
  scale_colour_manual(values=c(`4`="blue", `6`="red", `8`="darkorange")) +
  scale_shape_manual(values=c(`4`=16, `6`=NA, `8`=NA))

enter image description here