私は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)
2番目のデータフレームldatのデータを使用してプロットに追加しようとすると、問題が発生します。上記のコードには次の行が含まれていますが、コメントアウトされています。
geom_smooth(data=ldat, aes(x=Date, y=Mean), method='lm',se=FALSE, fullrange=TRUE, colour="black", linetype="dotdash", size=0.25) +
このコードラインのコメントを外すと、エラーが発生します。
eval(expr、envir、enclos)のエラー:オブジェクト 'tpcolor'が見つかりません*
そして、私はその理由がわかりません。代わりにgeom_lineを使用してみましたが、それも機能していないようです。コード内のさまざまな場所に配置してみましたが、効果はありませんでした。
, group=tpcolor,color=tpcolor
最初のプロット(ggplot2 aesthetic)からを削除すると、エラーは消えますが、割り当てようとしている色が失われます。dat $ tpcolorを使用してggplot2美学の色を明示的に割り当てると、別のエラーが発生します。
エラー:美学は長さ1か、dataProblems:Date、Meanと同じ長さである必要があります
ここでは、最初にプロットされたデータとは別に、同じ日付範囲内の別のレイヤーをプロットに追加していると思いましたが、これは、プライマリデータセットに割り当てられた色が2番目のデータセットに適用されていることを意味しているようです。やること。
次に何を試すべきかよくわかりません。元のデータフレームの各tpに割り当てられた色を使用して、両方のデータセットを同じプロットに取得するのに役立つアイデアはありますか?
ggplotを呼び出すと、次のすべてのgeomが指定したイニシャルaes
を取得します。これにより、geom_smooth呼び出しが検索されるtpcolor
ようになり、グループに色を付ける方法がわかりますが、グループが見つからないため、エラーが発生します。
修正するには、各geomでデータを個別に使用してみてください。
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)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加