我有,看起来像一个数据帧:包括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