私は をforループ内で実行するggplot呼び出しで線種の設定を自動化しようとしています。データにはvar2変数に約20個の値があり、これは Eurostoxx(インデックス)と他の値を一度にグラフ化することによってループします。ggplot in r:自動的に線種を設定する
Date value var1 var2
2011-09-30 20.67 Return on Equity Eurostoxx
Iを各グラフに実線でEurostoxxしたいと思う(それがスイッチするとき、それは読者に 紛らわしい):
は、ここで最初の行です。
私は手動で線種を設定する方法を知っている:
gp<- gp + scale_linetype_manual("",values=c("Eurostoxx"="dotted","Automobiles and Parts"="solid"))
が、data.frameでエラー
エラー(スケールの$ output_breaksにこの
secnam<-unique(g$var2)[!unique(g$var2)%in%"Eurostoxx"]
secnam
#"Automobiles and Parts"
gp<- gp + scale_linetype_manual("",values=c("Eurostoxx"="dotted",secnam="solid"))
の実行を自動化する私の試みを()、I(scale $ labels())): 行名に欠損値が含まれています
以下のコードは問題を再現します。
gfull<-structure(list(Date = structure(c(15247, 15278, 15308, 15338,
15247, 15278, 15308, 15338, 15247, 15278, 15308, 15338, 15247,
15278, 15308, 15338, 15247, 15278, 15308, 15338, 15247, 15278,
15308, 15338), class = "Date"), value = c(20.67, 19.81, 19.81,
19.92, 1.2966, 1.4054, 1.3744, 1.3828, 16.36, 16.58, 16.86, 16.7,
0.8263, 0.9167, 0.8642, 0.8197, 13.32, 12.82, 12.59, 12.55, 1.1672,
1.1721, 1.1643, 1.1509), var1 = c("Return on Equity", "Return on Equity",
"Return on Equity", "Return on Equity", "Price to Book", "Price to Book",
"Price to Book", "Price to Book", "Return on Equity", "Return on Equity",
"Return on Equity", "Return on Equity", "Price to Book", "Price to Book",
"Price to Book", "Price to Book", "Return on Equity", "Return on Equity",
"Return on Equity", "Return on Equity", "Price to Book", "Price to Book",
"Price to Book", "Price to Book"), var2 = c("Eurostoxx", "Eurostoxx",
"Eurostoxx", "Eurostoxx", "Eurostoxx", "Eurostoxx", "Eurostoxx",
"Eurostoxx", "Automobiles and Parts", "Automobiles and Parts",
"Automobiles and Parts", "Automobiles and Parts", "Automobiles and Parts",
"Automobiles and Parts", "Automobiles and Parts", "Automobiles and Parts",
"Utilities", "Utilities", "Utilities", "Utilities", "Utilities",
"Utilities", "Utilities", "Utilities")), .Names = c("Date", "value",
"var1", "var2"), row.names = c(71L, 72L, 73L, 74L, 4511L, 4512L,
4513L, 4514L, 145L, 146L, 147L, 148L, 4585L, 4586L, 4587L, 4588L,
1477L, 1478L, 1479L, 1480L, 5917L, 5918L, 5919L, 5920L), class = "data.frame")
コード:
はg<-gfull
g<-subset(gfull, var2 %in% c("Eurostoxx","Automobiles and Parts"))
gp <- ggplot(g, aes(Date, value,group=var2,lty=var2))
gp <-gp + facet_grid(var1~., scales="free")
gp<- gp + geom_line()
#EUROSTOXX is dotted
g<-gfull
g<-subset(g,var2%in%c("Eurostoxx","Utilities"))
gp <- ggplot(g, aes(Date, value,group=var2,lty=var2))
gp <-gp + facet_grid(var1~., scales="free")
gp<- gp + geom_line()
#EUROSTOXX is solid
secnam<-unique(g$var2)[!unique(g$var2)%in%"Eurostoxx"]
gp<- gp + scale_linetype_manual("",values=c("Eurostoxx"="dotted",secnam="solid"))
gp
#Error in data.frame(scale$output_breaks(), I(scale$labels())) :
#row names contain missing values
コードチャンクを使用してコードをフォーマットできますか? –
'data.frame'に必要な線種の値を含む新しい変数を作成し、' scale_linetype_identity'(未テスト)を使用することができます。 – baptiste
コメントをいただきありがとうございます。私はこのコードチャンクを次回のために調べます。 Baptiste、あなたの提案は正しかった.Joranは以下のように語った。 – Aidan