这是前一个
ggflucation()
的修改版,它将瓷砖的颜色和大小映射到频率上:
mydata <- read.table(header = F, text = "
0 1 2 3 4 5
1 2 0 0 0 0
2 0 2 2 0 0
3 5 7 8 3 0
4 12 11 14 7 1
5 1 1 2 4 1")
library(ggplot2)
library(magrittr)
tab <- as.table(t(as.matrix(mydata[-1, -1])) %>% set_colnames(1:5) %>% set_rownames(1:5))
ggfluc <- function(tab) {
if (is.table(tab))
tab <- as.data.frame(t(tab))
tab <- as.data.frame(tab)
oldnames <- names(tab)
names(tab) <- c("x", "y", "result")
tab <- transform(tab, x = as.factor(x), y = as.factor(y), freq = result)
ceiling = max(tab$freq); floor = 0
tab <- transform(tab, freq = sqrt(pmin(freq, ceiling)/ceiling),
border = ifelse(is.na(freq), "grey90", ifelse(freq > ceiling, "grey30", "grey50")))
tab[is.na(tab$freq), "freq"] <- 1
tab <- subset(tab, freq * ceiling >= floor)
nx <- length(levels(tab$x))
ny <- length(levels(tab$y))
p <- ggplot(tab, aes_string(x = "x", y = "y", height = "freq", width = "freq", fill = "result")) +
geom_tile(colour = "white")
p
}
ggfluc(tab)
![enter image description here](https://istack.dev59.com/G82fh.gif)
ggplot(data = reshape2::melt(table(mydata$v47, mydata$v78)), aes(x = Var1, y = Var2, fill=value)) + geom_tile()
。您可能希望将fill
变量设置为因子。 - user20650data.frame(table(mydata$v47, mydata$v78))
和melt
是相同的。 - Khashaacorrplot
包可能会有用:corrplot::corrplot(table(mydata$v47, mydata$v78), is.corr=F, method="square")
- user20650