-1
以下の関数は、渡されたデータからいくつかの密度をプロットすると、凡例をプロットしません。 MWE:あなたはaes
内部美的(例えば、colour
、fill
、など)にデータの列をマップするとき凡例がggplot2を使って複数の密度プロットをプロットしていない
plotDensities <- function(xlab="", xlim=c(), ...) {
datas <- list(...)
cbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
if (length(datas) > length(cbPalette)) return(invisible(NULL))
dplot <- ggplot() + xlab(xlab) +
scale_colour_manual(values=setNames(cbPalette[1:length(datas_names)], datas_names)) +
theme(legend.position = c(.8, .8))
datas_names <- names(datas)
for (i in 1:length(datas)) {
name <- datas_names[i]
values <- data.frame(x=datas[[name]])
dplot <- dplot + geom_density(aes(x=x), colour=cbPalette[i], data=values)
}
if (!is.null(xlim))
dplot <- dplot + xlim(xlim)
return(invisible(dplot))
}
v1 <- rnorm(2000, 0, 1)
v2 <- rnorm(3000, 1, 1.5)
v3 <- rnorm(4000, 2, 2.5)
dplot <- plotDensities(xlim="whatever", v1=v1, v2=v2, v3=v3)
dplot
。適合しました。ありがとう。 :)他のstackoverflow質問[リンク](http://stackoverflow.com/questions/12199919/overlapped-density-plots-in-ggplot2)の受け入れられた答えから似たような何かが否定投票がなぜ取られたのか、 –
うれしかった。私はダウン投票者ではないので、なぜ私は確信していません。 – eipi10