ggplot2 中的分面
Facetting in ggplot2
我有这个数据集:https://dl.dropboxusercontent.com/u/73950/data.csv
数据集包含 3 个变量。
这是我现在可视化数据的方式:
library(ggplot2)
library(reshape2)
library(RColorBrewer)
dat = read.csv("data.csv", header = FALSE)
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
sc <- scale_colour_gradientn(colours = myPalette(100))
ggplot(dat, aes(x=V1, y=V3, colour = V2))+ geom_point(alpha = .2,size = 3) + sc
我不只是一个图,而是想对图进行分面以显示 3 种不同的方式来将变量归因于每个轴和颜色。因此:
- x = V1, y = V2, 颜色 = V3
- x = V1, y = V3, 颜色 = V2
- x = V2, y = V3, 颜色 = V1
如何使用 ggplot2 的分面做这种事情?
您可以通过将数据放入 ggplot
喜欢的格式来获得它。在这种情况下,可用于将数据拆分为多个方面的列(在下面称为 var
)。为此,我只是将数据重复三次,为每个 2 向组合选择适当的 x 和 y 变量,并使用每个组合中遗漏的变量作为着色变量。
## Rearrange the data by 2-way combinations, the coloring is the remaining column
res <- do.call(rbind, combn(1:3, 2, function(ii)
cbind(setNames(dat[,c(ii, setdiff(1:3, ii))], c("x", "y", "color")),
var=paste(ii, collapse=".")), simplify=F))
ggplot(res, aes(x=x, y=y, color=color))+ geom_point(alpha = .2,size = 3) +
facet_wrap(~ var, scales="free") + sc
我有这个数据集:https://dl.dropboxusercontent.com/u/73950/data.csv 数据集包含 3 个变量。
这是我现在可视化数据的方式:
library(ggplot2)
library(reshape2)
library(RColorBrewer)
dat = read.csv("data.csv", header = FALSE)
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
sc <- scale_colour_gradientn(colours = myPalette(100))
ggplot(dat, aes(x=V1, y=V3, colour = V2))+ geom_point(alpha = .2,size = 3) + sc
我不只是一个图,而是想对图进行分面以显示 3 种不同的方式来将变量归因于每个轴和颜色。因此:
- x = V1, y = V2, 颜色 = V3
- x = V1, y = V3, 颜色 = V2
- x = V2, y = V3, 颜色 = V1
如何使用 ggplot2 的分面做这种事情?
您可以通过将数据放入 ggplot
喜欢的格式来获得它。在这种情况下,可用于将数据拆分为多个方面的列(在下面称为 var
)。为此,我只是将数据重复三次,为每个 2 向组合选择适当的 x 和 y 变量,并使用每个组合中遗漏的变量作为着色变量。
## Rearrange the data by 2-way combinations, the coloring is the remaining column
res <- do.call(rbind, combn(1:3, 2, function(ii)
cbind(setNames(dat[,c(ii, setdiff(1:3, ii))], c("x", "y", "color")),
var=paste(ii, collapse=".")), simplify=F))
ggplot(res, aes(x=x, y=y, color=color))+ geom_point(alpha = .2,size = 3) +
facet_wrap(~ var, scales="free") + sc