私はR/ggplotの初心者です。私はsimilar problemsのStackOverflowを調査しましたが、役に立たないです。それはおそらく家のggplotの専門家のための小さな問題です、もしそうなら、私は素早い答えを楽しみにしています!ggplot legend order mismatch
ここで説明します。データフレームに格納された変数から4つの曲線をプロットしようとしています。色と線種の両方でplayngしています。残念なことに、凡例のラベルは曲線と一致していないため、凡例の目的全体が崩れてしまいます。ここで
は数字です:
# declare variables
alpha = 0.5
m = 500
x = seq(m)
fdr_thresh = x/m*alpha
lvl_thresh = rep(alpha,m)
pvals = sin(2*pi*x/20)
pvalsA = exp(-x/100)*cos(2*pi*x/20)
# plot
df <- data.frame(pvals=pvals, pvalsA = pvalsA, FDR = fdr_thresh, level = lvl_thresh, x=x)
p4 <- ggplot(data = df) + geom_line(aes(x=x, y=pvals,color="Pure Sinusoid",linetype="Pure Sinusoid"))
p4 <- p4 + geom_line(aes(x=x, y=pvalsA,color="Damped Sinusoid",linetype="Damped Sinusoid"))
p4 <- p4 + geom_line(aes(x=x, y=FDR,color = 'FDR', linetype='FDR'))
p4 <- p4 + geom_line(aes(x=x, y=level,color='alpha',linetype='alpha'))
p4 = p4+ scale_linetype_manual(name = "Significance", values=c("Pure Sinusoid"= 1,"Damped Sinusoid" = 1,"FDR" = 2,"alpha" = 3),labels=c("Pure Sinusoid", "Damped Sinusoid", "Sloping line",bquote(alpha == .(alpha))))
p4 = p4 + scale_color_manual(name = "Significance",values=c("Pure Sinusoid"= "Chocolate1","Damped Sinusoid" = 'Chartreuse4',"FDR" = "black","alpha" = "black") , labels=c("Pure Sinusoid", "Damped Sinusoid", "Sloping line",bquote(alpha == .(alpha))))
p4 <- p4 + theme(legend.position = c(0.7, 0.8),legend.title=element_blank(),legend.key = element_rect(fill = "transparent",colour = "transparent"),legend.background = element_rect(fill=alpha('white', 0.8)))
show(p4)
そして、ここではそれを生成されたコードです。 MatlabやPythonの同じプロットは正しいでしょうし、15分かかってしまったので、私はどこかで間違った決定を下したにちがいありません。 (これは私の意思決定の一部ではありません)
あなたは正しいマッチングどうなるか、不一致とはどういう意味ですか? Rはあなたの美的変数を凡例にマッピングするので、何か間違って割り当てていない限り、 "不一致"はありません –
申し訳ありませんが、私はそれが自明であると思いました。凡例には、「Alpha = 0.5」に対応する黒い点線の「純粋な正弦曲線」と、その逆(橙色の曲線は「純粋な正弦曲線」とラベルする必要がありますが、代わりに「Alpha = 0.5」と表示されます) –