问题
I made a scattermatrix with the ggplot2 extension GGally with the following code
ggscatmat(dat2, columns = 2:6, color="car", alpha=0.8) +
ggtitle("Korrelation") +
theme(axis.text.x = element_text(angle=-40, vjust=1, hjust=0, size=10))
Now my problem is that in this case I don't really need the density lineplot or the correlation coeff., I do only want the scatterplots in the matrix. Is there a way to "delete" the other facets? I can#T find anything in the documentation.
Please excuse my bad english and thanks for any advice or help!
Edit: I found a not yet perfect solution with ggpairs:
ggpairs(dat2, columns = 2:6, mapping= aes(color=car),
upper = "blank",diag = "blank") +
theme(axis.text.x = element_text(angle=-40, vjust=1, hjust=0, size=10))
But now there's no legend anymore and two labels looking like the plot hasn't fully loaded yet:
回答1:
You can manually remove parts of the plot by messing about with the gtable
removePanels <- function(plot) {
g <- ggplotGrob(plot)
# get panels to remove: upper + diagonal
ids <- grep("panel", g$layout$name)
cols <- sqrt(diff(range(ids)) +1)
remove <- matrix(ids, ncol=cols)
remove <- remove[upper.tri(remove, diag=TRUE)]
# remove certain axis
yax <- grep("axis-l", g$layout$name)[1] # first
xax <- tail(grep("axis-b", g$layout$name), 1) #last
# remove cetain strips
ystrip <- grep("strip-right", g$layout$name)[1]
xstrip <- tail(grep("strip-top", g$layout$name), 1)
# remove grobs
g$grobs[c(remove, xax, yax, ystrip, xstrip)] <- NULL
g$layout <- g$layout[-c(remove, xax, yax, ystrip, xstrip),]
g
}
# draw
library(GGally)
library(ggplot2)
library(grid)
p <- ggscatmat(iris, columns = 1:4, color="Species", alpha=0.8) +
theme(axis.text.x = element_text(angle=-40, vjust=1, hjust=0, size=10))
grid.newpage()
grid.draw(removePanels(p))
回答2:
Following the official documentation, you can set an element of the ggpairs to blank. In your case you would be interested in changing the value for the diag to diag = "blank"
, as shown in the example below.
Example
On example of the mtcars data, you could do the following:
data("mtcars")
require(GGally)
ggpairs(data = mtcars[3:5], diag = "blank")
Results
The code would produce the desired chart without the diagonal plot:
来源:https://stackoverflow.com/questions/36741664/scattermatrix-in-ggplot2-ggally-without-density-plots