2012-09-11 40 views
0

儘管已經使用了ggplot幾次,但我很努力地解決這個問題。我想這將是最簡單的解釋是什麼我想沒有我的惡劣企圖這樣做,在使用ggplot,以下是相當難看太多,但它是最好的,我可以在此刻:(管理gidplot from`mids` object

require(mice) 
impute <- mice(nhanes, seed = 101) 

counts <- table(nhanes$hyp) 
barplot(counts, main="hyp", xlab="observed") 

x11() 
counts <- table(complete(impute,1)$hyp) 
barplot(counts, main="hyp", xlab="Imputation 1") 

x11() 
counts <- table(complete(impute,2)$hyp) 
barplot(counts, main="hyp", xlab="Imputation 2") 

x11() 
counts <- table(complete(impute,3)$hyp) 
barplot(counts, main="hyp", xlab="Imputation 3") 

x11() 
counts <- table(complete(impute,4)$hyp) 
barplot(counts, main="hyp", xlab="Imputation 4") 

x11() 
counts <- table(complete(impute,5)$hyp) 
barplot(counts, main="hyp", xlab="Imputation 5") 

我想在ggplot中創建一個漂亮的圖表,顯示這些類型的barlot圖 - 例如,6行中的一行,所有的圖表都在y軸上具有相同的比例尺,以便可以輕鬆地進行比較。 ldt <-complete(impute,"long", include=TRUE)然後melt(ldt, c(".imp",".id","hyp"))但我只是不能工作後如何調用ggplot :(

請請注意,我的真實數據中有許多不同的變量,這僅適用於分類變量。我想我可以做出一個功能,然後運行,使用sapply,但只能在分類列?但我不知道該怎麼做!

回答

1

幾個點

  1. 你需要有hyp或作爲一個因素考慮的變量。在執行此操作之前,最簡單的方法是刪除 ,NA值。
  2. facet_wrap(一個變量)或facet_grid(一個或多個變量)會很好地爲您排列圖。

例如

ldt <-complete(impute,"long", include=TRUE) 

ggplot(ldt[!is.na(ldt$hyp),], aes(x= factor(hyp))) + 
    geom_bar() + 
    facet_wrap(~.imp, nrow = 1) + 
    xlab('Observed') + 
    scale_y_continuous(expand = c(0,0)) 

enter image description here

以長格式

現在你要facet_gridscales = 'free_y'

all_long <- melt(ldt, c(".imp",".id","hyp")) 
ggplot(all_long[!is.na(all_long$hyp),], aes(x= factor(hyp))) + 
    geom_bar() + 
    facet_grid(variable ~.imp, scales = 'free_y') + 
    xlab('Observed') + 
    scale_y_continuous(expand = c(0,0)) 

enter image description here

相關問題