1つのプロットに複数の密度関数を持たせる必要があります。各密度は、私の全体的なデータセットのサブセットに対応しています。サブセットは、データセット内の変数の1つによって取られた値によって定義されます。重畳密度、非排他的サブセット
具体的には、1年、3年、10年の地平線の密度関数を描きたいと思います。もちろん、10年の視野には短いものも含まれます。同様に、3年間の地平線密度は、昨年のデータを用いて構築する必要があります。 サブセットは、data[period == 1,]
,data[period <= 3, ]
,data[period == 10,]
に対応する必要があります。
私はgeom_density
を互いに重ね合わせて、つまりそのたびにデータを再定義することによってこれを行うことができました。
ggplot() +
geom_density(data = data[period <=3,], aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="red") +
geom_density(data = data[period ==1,], aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="grey") +
geom_density(data = data, aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="green")
それが正常に動作しますが、これはそれを行うには正しい方法ではありませんような気がします(そして実際、それは、例えば面倒な伝説を作成します)。一方
、そのようにやって:その後、期間は相互に排他的であると解釈されているので、
ggplot(data, aes(x=BEST_CUR_EV_TO_EBITDA, color=period)) +
geom_density(alpha=.2, fill="blue")
はしないだろう。
サブセットが重複する値period
の値に基づいて、aes(color)
を指定する方法はありますか。
実行コード:依存のグループに対処する方法の
library(data.table)
library(lubridate)
library(ggplot2)
YEARS <- 10
today <- Sys.Date()
lastYr <- Sys.Date()-years(1)
last3Yr <- Sys.Date()-years(3)
start.date = Sys.Date()-years(YEARS)
date = seq(start.date, Sys.Date(), by=1)
BEST_CUR_EV_TO_EBITDA <- rnorm(length(date), 3,1)
data <- cbind.data.frame(date, BEST_CUR_EV_TO_EBITDA)
data <- cbind.data.frame(data, period = rep(10, nrow(data)))
subPeriods <- function(aDf, from, to, value){
aDf[aDf$date >= from & aDf$date <= to, "period"] = value
return(aDf)
}
data <- subPeriods(data, last3Yr, today, 3)
data <- subPeriods(data, lastYr, today, 1)
data <- data.table(data)
colScale <- scale_colour_manual(
name = "horizon"
, values = c("1 Y" = "grey", "3 Y" = "red", "10 Y" = "green"))
ggplot() +
geom_density(data = data[period <=3,], aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="red") +
geom_density(data = data[period ==1,], aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="grey") +
geom_density(data = data, aes(x=BEST_CUR_EV_TO_EBITDA), alpha=.2, fill="green") +
colScale
は 'データ[期間== 1、]'データ[期間の '一部ではありません< = 3、] '? –
@AdamQuekはい、正確です。サブセットが相互に排他的ではないという事実が、その混乱を生み出すものです。 – hartmut