/ / 2つの変数に基づいて色と線種を含むggplot凡例を作成する - ggplot2、legend

ggplot2、legendという2つの変数に基づいて、色と線種でggplot凡例を作成する

色と形の両方でggplot凡例を作成する 形と色を組み合わせる方法がありますが、1つの変数に基づいています。変数が2つの変数に分割されている場合、これが可能かどうか疑問です。

Hierはテストデータです:

(x <- data.frame(time =rep(1:5,4)
, sex = rep(c("m","f"), each=5)
, val_type = rep(c("obs","fit"),each=10)
, val = rep(1:4,each=5)*rep(1:5,4)
)
)

私が凡例をどのようにしたいのかを示すために、私は2つの変数を組み合わせます:

x$sv <- paste(x$sex,x$val_type,sep="-")

ここに1つの変数を持つggplotがあります:

ggplot(data=x, aes(x=time, y=val, linetype=sv, col=sv)) +
geom_line() +
scale_colour_manual(name = ""
, values=c("red","red","blue","blue")
, labels=c("Female fitted","Female observed"
,"Male fitted","Male observed")
) +
scale_linetype_manual(name = ""
, values=c(1,2,1,2)
, labels=c("Female fitted","Female observed"
,"Male fitted","Male observed")
)

ここにプロットがあります:

ここに画像の説明を入力

私は同じ凡例を持っていますが、2つの変数を別々に使用したいと思います

ggplot(data=x, aes(x=time, y=val, linetype=val_type, col=sex)) +
geom_line()

出来ますか? 私が結合された変数を使用したくない理由は、分析に必要のない変数を作成したくないからです。別の理由は、凡例を手動でどのようにカスタマイズできるかを確認することです。 手伝ってくれてありがとう。

回答:

回答№1は2

新しい変数を大きな問題として作成することはありません(特にパイプを使用する場合)。しかし、はい、可能です interaction 手動スケール定義を使用してください。

ggplot(data = x,
aes(x = time,
y = val,
linetype = interaction(val_type, sex),
col = interaction(val_type, sex))) +
geom_line() +
scale_colour_manual(name = ""
, values=c("red","red","blue","blue")
, labels=c("Female fitted","Female observed"
,"Male fitted","Male observed")
) +
scale_linetype_manual(name = ""
, values=c(1,2,1,2)
, labels=c("Female fitted","Female observed"
,"Male fitted","Male observed")
)

ここに画像の説明を入力