我有,看起來像一個數據幀:包括Na的頻率的氣泡圖
Data<- data.frame(item1=c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, NA, 5, NA, NA),
item2=c(1, 2, 2, 4, 1, 1, 2, 3, 5, 5, NA, NA, NA, NA),
item3=c(1, 2, 2, 4, 1, 1, 2, 3, 5, 5, NA, NA, NA, NA),
item4=c(1, 2, 2, 4, 1, 1, 4, 3, 1, 5, NA, 3, NA, NA),
item5=c(1, 5, 2, 4, 2, 1, 2, 3, 5, 5, NA, NA, 1, NA))
和我有一個函數定義的,即提取柱的頻率和繪製它沒有NA的
frequencies <- function(x,K=5)
{
p <- length(x) # items
n <- nrow(x) # observations
r <- (5, NA) # values
myf <- function(y) # extract frequencies
{
y <- y[!is.na(y)]
y <- as.factor(y)
aux <- summary(y)
res <- rep(0, r)
res[1:r %in% names(aux)] <- aux
100 * res/sum(res)
}
freqs <- apply(x, 2, FUN = myf) # apply myf by columns
df2 <- expand.grid(vals = 1:r, item = 1:p) # all possible combinations
df2$freq <- as.numeric(freqs) # add frequencies
# graph
plot(df2$item,df2$vals,type="n",xlim=c(1,p),ylim=c(1,r),xaxt = "n",
xlab="", ylab="", ann=FALSE)
axis(1, labels=FALSE)
labs <- paste(names(x)) ##labels=c("v1", "v2", ...)
text(1:p, srt = 60, adj=0.5, pos=1, las=2,
labels = labs, xpd = TRUE, par("usr")[1], cex.main=0.8, offset=1)
points(df2$item,df2$vals,pch=22,col="black", bg="gray", cex=(df2$freq/n)*K)
}
我想NA的被ploted爲「價值」(在y座標),所以我的情節可以看看類似於一個(已被編輯用編輯器,沒有R):
謝謝你在前進,
安古洛
謝謝,這是我想要的一個很好的解決方案。你知道這種情節是否有一個特定的名字? – 2014-11-05 10:31:26
我認爲它被稱爲[**氣泡圖/plot**](http://en.wikipedia.org/wiki/Bubble_chart) – Henrik 2014-11-05 10:47:25
@AriadnaAngulo,我把你的問題的標題從「頻率圖」改爲「泡泡圖」,我認爲這是一個比較常見的問題參考這種情節的方式。 – Henrik 2014-11-05 12:00:43