图例使用 ggpairs
Legend using ggpairs
尝试按照此处制作的示例,我重现了以下代码:
# Load required packages
require(GGally)
# Load datasets
data(state)
df <- data.frame(state.x77,
State = state.name,
Abbrev = state.abb,
Region = state.region,
Division = state.division
)
# Create scatterplot matrix
p <- ggpairs(df,
# Columns to include in the matrix
columns = c(3,5,6,7),
# What to include above diagonal
# list(continuous = "points") to mirror
# "blank" to turn off
upper = "blank",
legends=T,
# What to include below diagonal
lower = list(continuous = "points"),
# What to include in the diagonal
diag = list(continuous = "density"),
# How to label inner plots
# internal, none, show
axisLabels = "none",
# Other aes() parameters
colour = "Region",
title = "State Scatterplot Matrix"
)
# Show the plot
print(p)
我应该为每个情节获得一张带有图例的图像。
但是,我得到了一个没有任何图例的。
关于为什么我得到的图像没有图例的任何提示?我的特殊情况需要它们!
我正在使用 R v. 3.2.2,并在 RStudio 和 RGui 中都尝试过。
提前致谢!
应该有一个标准的方法,但我找不到。旧的打印功能仍然存在并且可以访问,但与内部功能一样。试试这个而不是打印:
GGally:::print_ggpairs_old(p)
如果你添加这个(感谢这个 post 回答 )
colidx <- c(3,5,6,7)
for (i in 1:length(colidx)) {
# Address only the diagonal elements
# Get plot out of plot-matrix
inner <- getPlot(p, i, i);
# Add ggplot2 settings (here we remove gridlines)
inner <- inner + theme(panel.grid = element_blank()) +
theme(axis.text.x = element_blank())
# Put it back into the plot-matrix
p <- putPlot(p, inner, i, i)
for (j in 1:length(colidx)){
if((i==1 & j==1)){
# Move the upper-left legend to the far right of the plot
inner <- getPlot(p, i, j)
inner <- inner + theme(legend.position=c(length(colidx)-0.25,0.50))
p <- putPlot(p, inner, i, j)
}
else{
# Delete the other legends
inner <- getPlot(p, i, j)
inner <- inner + theme(legend.position="none")
p <- putPlot(p, inner, i, j)
}
}
}
你得到了更好的东西:
尝试按照此处制作的示例,我重现了以下代码:
# Load required packages
require(GGally)
# Load datasets
data(state)
df <- data.frame(state.x77,
State = state.name,
Abbrev = state.abb,
Region = state.region,
Division = state.division
)
# Create scatterplot matrix
p <- ggpairs(df,
# Columns to include in the matrix
columns = c(3,5,6,7),
# What to include above diagonal
# list(continuous = "points") to mirror
# "blank" to turn off
upper = "blank",
legends=T,
# What to include below diagonal
lower = list(continuous = "points"),
# What to include in the diagonal
diag = list(continuous = "density"),
# How to label inner plots
# internal, none, show
axisLabels = "none",
# Other aes() parameters
colour = "Region",
title = "State Scatterplot Matrix"
)
# Show the plot
print(p)
我应该为每个情节获得一张带有图例的图像。
但是,我得到了一个没有任何图例的。
关于为什么我得到的图像没有图例的任何提示?我的特殊情况需要它们!
我正在使用 R v. 3.2.2,并在 RStudio 和 RGui 中都尝试过。
提前致谢!
应该有一个标准的方法,但我找不到。旧的打印功能仍然存在并且可以访问,但与内部功能一样。试试这个而不是打印:
GGally:::print_ggpairs_old(p)
如果你添加这个(感谢这个 post 回答
colidx <- c(3,5,6,7)
for (i in 1:length(colidx)) {
# Address only the diagonal elements
# Get plot out of plot-matrix
inner <- getPlot(p, i, i);
# Add ggplot2 settings (here we remove gridlines)
inner <- inner + theme(panel.grid = element_blank()) +
theme(axis.text.x = element_blank())
# Put it back into the plot-matrix
p <- putPlot(p, inner, i, i)
for (j in 1:length(colidx)){
if((i==1 & j==1)){
# Move the upper-left legend to the far right of the plot
inner <- getPlot(p, i, j)
inner <- inner + theme(legend.position=c(length(colidx)-0.25,0.50))
p <- putPlot(p, inner, i, j)
}
else{
# Delete the other legends
inner <- getPlot(p, i, j)
inner <- inner + theme(legend.position="none")
p <- putPlot(p, inner, i, j)
}
}
}
你得到了更好的东西: