하나의 플롯 내에서 (facet_wrap을 사용하여) 여러 개의 히스토그램을 만들고 싶습니다. ("P1"P2는 ")의 10 개 쓰레기통을 가정 해 봅시다 나는 그것이 매개 변수 당 생성 플롯을 수정하고 싶습니다 지금ggplot2 히스토그램 binwidth
df <- data.frame(p1 = rnorm(100,5,2), p2 = rnorm(100,80,20), group = rep(LETTERS[1:4],25))
library(ggplot2)
library(reshape)
plotData <- melt(df, id.vars = "group", measure.vars = c("p1","p2") )
m <- ggplot(plotData, aes(x = value, color = group, fill = group, group = group))
m <- m + geom_bar(position=position_dodge())
m <- m + facet_wrap(~ variable,scales = "free_x")
print(m)
까지
지금 : 이 제품은 예제 코드가 될 수있다. 나는 데이터의 하위 집합에 의존해야이 같은 binwidth/휴식 계산을 할 수있는 방법을 찾을 수 없습니다.
그것이 가능 전혀 내 솔루션을 공유하고 싶어?
수를 막대 그래프 배율을 조정 밀도 곡선과 막대 그래프 오버레이 할 수있는 가능성 확장 (위의 링크 된 대답 질문에서 가져온) :
df <- data.frame(p1 = rnorm(1000,5,2), p2 = rnorm(1000,80,20), group = rep(LETTERS[1:4],25))
library(ggplot2)
library(reshape)
library(plyr)
plotData <- melt(df, id.vars = "group", measure.vars = c("p1","p2") )
nBins <- 10
groupedData <- dlply(plotData, .(variable))
groupedBinWidth <- llply(groupedData, .fun = function(data, nBins) {
r <- range(data$value, na.rm = TRUE, finite = TRUE)
widthOfBins = (r[2] - r[1])/nBins
if (is.na(widthOfBins) || is.infinite(widthOfBins) || (widthOfBins <= 0)) widthOfBins <- NULL
widthOfBins
}, nBins = nBins)
densData <- dlply(plotData, .(variable, group), .fun = function(subData){
param <- subData$variable[1]
group <- subData$group[1]
d <- density(subData$value)
bw <- groupedBinWidth[[param]]
data.frame(x = d$x, y = d$y * nrow(subData) * bw , group = group, variable = param)
})
hls <- mapply(function(x, b) geom_bar(aes(x = value), position = position_dodge(), data = x, binwidth = b),
groupedData, groupedBinWidth)
dLay <- mapply(function(data) geom_density(data = data, aes(x = x, y = y), stat = "identity", fill = NA, size = 1),
densData)
m <- ggplot(plotData, aes(x = value, color = group, fill = group, group = group))
m <- m + hls
m <- m + dLay
m <- m + facet_wrap(~ variable,scales = "free")
print(m)
그래서 당신은 각 그룹 /면 10 개 쓰레기통에, 히스토그램 원하는, 또는 당신을 오해는 무엇입니까? – fileunderwater
@fileunderwater : 맞습니다, 그게 내가 원하는 것입니다. – July
@shadow : 나는이 질문을 보지 못했습니다. 링크에 감사드립니다. 답변이 포함되어있을 수 있습니다. 나는 그것을 줄 것이다 – July