データ セット内の列に基づいて凡例ガイドのaes
サイズ値をオーバーライドするにはどうすればよいですか?ggplot2
この例を参照してください (編集 2 : 試行 C を追加し、対数スケールを使用するように線のサイズを変更しました):
library(data.table)
set.seed(26798)
dt<-rbind(data.table(Trial="A",Value=rweibull(1000,1.0,0.5)),
data.table(Trial="B",Value=rweibull(100,1.2,0.75)),
data.table(Trial="C",Value=rweibull(10,1.3,0.8)))
# Add a count and something like a cumulative distribution:
dt2<-dt[order(Trial,Value),list(Value,N=.N),by=Trial][,list(Value,N,y=1-cumsum(N)/sum(N)),by=Trial]
dt2
## Trial Value N y
## 1: A 0.0003628745 1000 0.999
## 2: A 0.0013002615 1000 0.998
## 3: A 0.0017002173 1000 0.997
## 4: A 0.0022597343 1000 0.996
## 5: A 0.0026608082 1000 0.995
## ---
##1096: B 1.6821827814 100 0.040
##1097: B 2.2431595707 100 0.030
##1098: B 2.5122479833 100 0.020
##1099: B 2.5519954416 100 0.010
##1100: B 2.6848412995 100 0.000
ggplot(dt2) +
geom_line(aes(x=Value,y=y,group=Trial,color=Trial,size=N)) +
scale_size(range=c(0.1, 2), trans="log") +
guides(size=F, color=guide_legend(override.aes=list(size=2)))
ガイド凡例の Trial の各値の線の太さをプロットの線と一致させたい (つまり、「A」は太く、「B」は細くする)。 編集 1: @Arun と @ChelseaE は、各厚さを手動で調整するための良い提案をしましたが、実際のデータセットには多くの因子レベルがあり、常に変化しているため、「動的」である必要があります。
@DidzisElferts からの同様の質問 (プロットに影響を与えずに ggplot2 の凡例の外観を制御する) への回答は、サイズを静的な値に設定する方法を示しています。上記size=2
の例の最後の行の部分では、凡例の線のサイズを変更できますが、プロットの線のサイズに合わせたいと思います。代わりに使用size=N
することは論理的に思えますが、「オブジェクト 'N' が見つかりません」というエラーが発生します。正しい構文は何ですか?
望ましい出力: