Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用不同颜色的ggplot打印多个数据帧_R_Ggplot2 - Fatal编程技术网

R 使用不同颜色的ggplot打印多个数据帧

R 使用不同颜色的ggplot打印多个数据帧,r,ggplot2,R,Ggplot2,我对r和ggplot2都很陌生。我正在尝试使用下面的代码创建一个绘图。我的想法是,主数据集(dat)包含我要绘图的数据,并且dat中的每个“tp”都被指定了唯一的颜色,以便我可以看到与特定“tp”相关的厚度。此代码运行良好,输出符合预期 #Example require(ggplot2) #DataFrame mytp<-c(80.01,80.01,80.01,80.01,80.01,80.01,80.02,80.02,80.02,80.02,80.02,80.02,80.03,80.0

我对r和ggplot2都很陌生。我正在尝试使用下面的代码创建一个绘图。我的想法是,主数据集(dat)包含我要绘图的数据,并且dat中的每个“tp”都被指定了唯一的颜色,以便我可以看到与特定“tp”相关的厚度。此代码运行良好,输出符合预期

#Example
require(ggplot2)

#DataFrame
mytp<-c(80.01,80.01,80.01,80.01,80.01,80.01,80.02,80.02,80.02,80.02,80.02,80.02,80.03,80.03,80.03,80.03,80.03,80.03,80.04,80.04,80.04,80.04,80.04,80.04,83.01,83.01,83.01,83.01,83.01,83.01,83.02,83.02,83.02,83.02,83.02,83.02,83.03,83.03,83.03,83.03,83.03,83.03,83.04,83.04,83.04,83.04,83.04,83.04)
mycompid<-c(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)
mytml<-c(80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83)
myyears<-c(7.33470226,23.50171116,20.25188227,15.8329911,26.58726899,11.00068446,7.33470226,26.58726899,23.50171116,11.00068446,20.25188227,15.8329911,7.33470226,11.00068446,26.58726899,23.50171116,15.8329911,20.25188227,7.33470226,11.00068446,15.8329911,20.25188227,26.58726899,23.50171116,7.33470226,11.00068446,15.8329911,20.25188227,23.50171116,26.58726899,7.33470226,11.00068446,15.8329911,20.25188227,23.50171116,26.58726899,7.33470226,11.00068446,15.8329911,20.25188227,23.50171116,26.58726899,7.33470226,11.00068446,15.8329911,20.25188227,23.50171116,26.58726899)
mythick<-c(0.29,0.28,0.28,0.28,0.28,0.28,0.29,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.27,0.27,0.27,0.27,0.27,0.27,0.28,0.27,0.27,0.27,0.27,0.27,0.28,0.28,0.28,0.28,0.28,0.28,0.3,0.29,0.29,0.28,0.28,0.28,0.3,0.28,0.28,0.27,0.27,0.27)
mycomp<-c("6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE")
myDate<-c("1994-10-01","2010-12-01","2007-08-31","2003-03-31","2013-12-31","1998-05-31","1994-10-01","2013-12-31","2010-12-01","1998-05-31","2007-08-31","2003-03-31","1994-10-01","1998-05-31","2013-12-31","2010-12-01","2003-03-31","2007-08-31","1994-10-01","1998-05-31","2003-03-31","2007-08-31","2013-12-31","2010-12-01","1994-10-01","1998-05-31","2003-03-31","2007-08-31","2010-12-01","2013-12-31","1994-10-01","1998-05-31","2003-03-31","2007-08-31","2010-12-01","2013-12-31","1994-10-01","1998-05-31","2003-03-31","2007-08-31","2010-12-01","2013-12-31","1994-10-01","1998-05-31","2003-03-31","2007-08-31","2010-12-01","2013-12-31")
mytpcolor<-c("gray53","gray53","gray53","gray53","gray53","gray53","lightyellow4","lightyellow4","lightyellow4","lightyellow4","lightyellow4","lightyellow4","salmon2","salmon2","salmon2","salmon2","salmon2","salmon2","pink","pink","pink","pink","pink","pink","gray52","gray52","gray52","gray52","gray52","gray52","mistyrose1","mistyrose1","mistyrose1","mistyrose1","mistyrose1","mistyrose1","dodgerblue","dodgerblue","dodgerblue","dodgerblue","dodgerblue","dodgerblue","violetred1","violetred1","violetred1","violetred1","violetred1","violetred1")

#Primary Data for Plot
dat<-data.frame(tp=mytp, compid=mycompid,       tml=mytml,years=myyears,thick=mythick,comp=mycomp,Date=myDate,tpcolor=mytpcolor)
dat$Date=as.Date(dat$Date)

ldatcompid<-c(4,4,4,4,4,4,4,4,4)
ldatnps<-c(6,6,6,6,6,6,6,6,6)
ldatcomp<-c("PIPE","PIPE","PIPE","PIPE","PIPE","PIPE","PIPE","PIPE","PIPE")
ldatcase<-c("data","data","data","data","data","data","data","data","data")
ldatyear<-c(0,2.5,7.33,11,15.83,19.83,20.25,23.5,26.59)
ldatMean<-c(0.2849,0.2843,0.2831,0.2822,0.2807,0.2798,0.2797,0.2788,0.2778)
ldatDate<-c("1987-06-01","1989-11-30","1994-09-29","1998-05-31","2003-03-30","2007-03-30","2007-08-31","2010-11-30","2014-01-01")
ldatsizecomp<-c("6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE","6PIPE")

#Additional Data in separate Date Set
ldat<-data.frame(compid=ldatcompid, nps=ldatnps,       comp=ldatcomp,case=ldatcase,year=ldatyear,   Mean=ldatMean,Date=ldatDate,sizecomp=ldatsizecomp)
ldat$Date=as.Date(ldat$Date)

ggplot(data=dat,aes(x=as.Date(Date),y=thick, group=tpcolor,color=tpcolor)) + geom_point(shape=18,size=3,position = position_jitter(w = 50, h = 0)) + # Plot Main Data 
gtitle(paste0("MyCircuit","_","MyComponent","(",dat$compid,")")) +  #Plot Title
theme_bw() + theme(plot.title= element_text(size=16, face="bold")) + 
labs(x="Survey Dates and Beyond",y="Thickness(in Inches)") +  #Axis labels

***#MeanLine of 2nd Set Of Data  --- WHEN LINE 39 (geom_smooth) or LINE 40 (geom_line) below are UNCOMMENTED, the PLOT NO LONGER RECOGNIZES tpcolor used in line 31 (ggplot2) above.  Instead I receive an error Message:  Error in eval(expr, envir, enclos) : object 'tpcolor' not found --WHY?
#geom_smooth(data=ldat, aes(x=Date, y=Mean), method='lm',se=FALSE, fullrange=TRUE, colour="black", linetype="dotdash", size=0.25) +
#geom_line(data=ldat, aes(x=Date, y=Mean), colour="black", linetype="dotdash", size=0.25) +***

scale_colour_discrete(name  ="Test Points",
                    breaks=dat$tpcolor,
                    labels=dat$tp)
当此代码行未注释时,我得到一个错误:

eval(expr、envir、enclose)中出错:找不到对象“tpcolor”*

我不明白为什么。我试着用几何线代替,但那似乎也不起作用。我试着把它放在代码中的不同位置,但没有效果

如果我从初始绘图(ggplot2)中删除
,group=tpcolor,color=tpcolor
,错误将消失,但我将丢失要指定的颜色。如果使用dat$tpcolor显式指定ggplot2美学中的颜色,则会出现不同的错误:

错误:美学长度必须为1,或与数据长度相同问题:日期,平均值

在这里,我以为我只是将同一日期范围内的另一层添加到我的绘图中,与最初绘制的数据分开,但这似乎意味着分配给主要数据集的颜色将应用到第二个数据集,而我并没有尝试这样做


我真的不知道下一步该做什么。有什么想法可以帮助我使用原始dat数据帧中每个tp的指定颜色将两组数据放到同一个绘图上?

当调用ggplot时,以下所有几何图形都会得到您给出的初始值
aes
。这会导致geom_smooth调用查找
tpcolor
,这样它就知道如何给组着色,但找不到,从而导致错误

要修复此问题,您可以尝试在每个geom中分别使用dat:

ggplot() + geom_point(data = dat, aes(x = as.Date(Date), y = thick, group = tpcolor, color = tpcolor), shape = 18, size = 3, position = position_jitter(w = 50, h = 0)) +
           geom_smooth(data = ldat, aes(x = Date, y = Mean), method = 'lm', se = FALSE, fullrange = TRUE, colour = "black", linetype = "dotdash", size = 0.25)
或者,您可以将
inherit.aes=FALSE
添加到geom_smooth调用中,以确保它不会继承以前的
aes

ggplot(data = dat, aes(x = as.Date(Date), y = thick, group = tpcolor, color = tpcolor)) +
       geom_point(shape = 18, size = 3, position = position_jitter(w = 50, h = 0)) +
       geom_smooth(data = ldat, aes(x = Date, y = Mean), method = 'lm', se = FALSE, fullrange = TRUE, colour = "black", linetype = "dotdash", size = 0.25, inherit.aes = FALSE)

…第三种方法是通过指定
color=NULL
,在问题层显式地“取消映射”颜色。谢谢大家。工作得很好。谢谢你的帮助。
ggplot(data = dat, aes(x = as.Date(Date), y = thick, group = tpcolor, color = tpcolor)) +
       geom_point(shape = 18, size = 3, position = position_jitter(w = 50, h = 0)) +
       geom_smooth(data = ldat, aes(x = Date, y = Mean), method = 'lm', se = FALSE, fullrange = TRUE, colour = "black", linetype = "dotdash", size = 0.25, inherit.aes = FALSE)