如何将图例添加到用 lattice 和 latticeExtra 制作的绘图中?
How to add a legend to a plot made with lattice and latticeExtra?
我使用 lattice 和 lattice extra 绘制了五个不同区域的观察值和预测值。我使用 xyplot 绘制观察值,然后使用 lattice extra 中的 as.layer 函数添加预测线。我想在图表中添加图例,但没有成功。
这里有两个示例数据集以及绘图代码。
示例数据集一。我只包括两个领域。
example1 <-
structure(list(model_predict = c(10, 25, 95, 23, 56, 70, 56,
45, 25, 50), Shell_Height = c(27, 33, 115, 25, 46, 50, 35, 35,
23, 45), SAMS_region_2015 = structure(c(1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L), .Label = c("DMV", "LI"), class = "factor")), .Names = c("model_predict",
"Shell_Height", "SAMS_region_2015"), row.names = c(NA, -10L), class = "data.frame")
示例数据集二。也只包括两个区域。
example2 <-
structure(list(Meat_Weight = c(15, 27, 100, 15, 60, 75, 50, 37,
28, 60), Shell_Height = c(25, 30, 110, 20, 45, 48, 35, 30, 25,
50), SAMS_region_2015 = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L), .Label = c("DMV", "LI"), class = "factor")), .Names = c("Meat_Weight",
"Shell_Height", "SAMS_region_2015"), row.names = c(NA, -10L), class = "data.frame")
绘图代码
library(lattice)
library(latticeExtra)
#observed vs predicted values by SAMS region
foo<-xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",type="p",
col="red",pch=3)
#add layer of observed values
foo <- foo +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
我想为图表添加一个图例,其中包含观察和预测文本以及图表中用于不同变量的符号或线条和颜色。
R信息
会话信息()
R 版本 3.2.1 (2015-06-18)
平台:i386-w64-mingw32/i386(32 位)
运行 下:Windows 7 x64(内部版本 7601)Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets
[7] methods base
other attached packages:
[1] latticeExtra_0.6-26 RColorBrewer_1.1-2 nlme_3.1-120
[4] MASS_7.3-40 xlsx_0.5.7 xlsxjars_0.6.1
[7] rJava_0.9-6 plyr_1.8.3 RODBC_1.3-12
[10] lattice_0.20-31
loaded via a namespace (and not attached):
[1] tools_3.2.1 Rcpp_0.11.6
如有任何帮助,我们将不胜感激。
您可以将 key=
添加到您的两个 xyplot
调用之一
xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",type="p",
col="red",pch=3,
key=list(columns=2,
text=list(lab=c("weight","predict")),
points=list(pch=c(3,NA), col="red"),
lines=list(lty=c(0,3), lwd=4, col="blue"))) +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
xyplot()
的关键参数采用一个参数列表,可以很好地处理这个问题。唯一真正的技巧是,如果您在列表中包含一个 lines
元素,您可以在 it 中包含一个额外的 type=
元素来指示将绘制哪些项目作为点,作为线。
## Set up a key
foo_key <- list(x = .97, y = .92, corner = c(1, 1),
text = list(c("Observed", "Predicted")),
lines = list(type = c("p", "l"), col = c("red", "blue"),
pch = 3, lwd = 4, lty = 3))
## Then pass it in to xyplot() via its 'key' argument
foo <- xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",
type = "p", col = "red", pch = 3,
key = foo_key)
## ... and carry on with your code, adding a layer and printing the whole thing
foo <- foo +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
foo
我使用 lattice 和 lattice extra 绘制了五个不同区域的观察值和预测值。我使用 xyplot 绘制观察值,然后使用 lattice extra 中的 as.layer 函数添加预测线。我想在图表中添加图例,但没有成功。
这里有两个示例数据集以及绘图代码。
示例数据集一。我只包括两个领域。
example1 <-
structure(list(model_predict = c(10, 25, 95, 23, 56, 70, 56,
45, 25, 50), Shell_Height = c(27, 33, 115, 25, 46, 50, 35, 35,
23, 45), SAMS_region_2015 = structure(c(1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L), .Label = c("DMV", "LI"), class = "factor")), .Names = c("model_predict",
"Shell_Height", "SAMS_region_2015"), row.names = c(NA, -10L), class = "data.frame")
示例数据集二。也只包括两个区域。
example2 <-
structure(list(Meat_Weight = c(15, 27, 100, 15, 60, 75, 50, 37,
28, 60), Shell_Height = c(25, 30, 110, 20, 45, 48, 35, 30, 25,
50), SAMS_region_2015 = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L), .Label = c("DMV", "LI"), class = "factor")), .Names = c("Meat_Weight",
"Shell_Height", "SAMS_region_2015"), row.names = c(NA, -10L), class = "data.frame")
绘图代码
library(lattice)
library(latticeExtra)
#observed vs predicted values by SAMS region
foo<-xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",type="p",
col="red",pch=3)
#add layer of observed values
foo <- foo +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
我想为图表添加一个图例,其中包含观察和预测文本以及图表中用于不同变量的符号或线条和颜色。
R信息 会话信息() R 版本 3.2.1 (2015-06-18) 平台:i386-w64-mingw32/i386(32 位) 运行 下:Windows 7 x64(内部版本 7601)Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets
[7] methods base
other attached packages:
[1] latticeExtra_0.6-26 RColorBrewer_1.1-2 nlme_3.1-120
[4] MASS_7.3-40 xlsx_0.5.7 xlsxjars_0.6.1
[7] rJava_0.9-6 plyr_1.8.3 RODBC_1.3-12
[10] lattice_0.20-31
loaded via a namespace (and not attached):
[1] tools_3.2.1 Rcpp_0.11.6
如有任何帮助,我们将不胜感激。
您可以将 key=
添加到您的两个 xyplot
调用之一
xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",type="p",
col="red",pch=3,
key=list(columns=2,
text=list(lab=c("weight","predict")),
points=list(pch=c(3,NA), col="red"),
lines=list(lty=c(0,3), lwd=4, col="blue"))) +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
xyplot()
的关键参数采用一个参数列表,可以很好地处理这个问题。唯一真正的技巧是,如果您在列表中包含一个 lines
元素,您可以在 it 中包含一个额外的 type=
元素来指示将绘制哪些项目作为点,作为线。
## Set up a key
foo_key <- list(x = .97, y = .92, corner = c(1, 1),
text = list(c("Observed", "Predicted")),
lines = list(type = c("p", "l"), col = c("red", "blue"),
pch = 3, lwd = 4, lty = 3))
## Then pass it in to xyplot() via its 'key' argument
foo <- xyplot(Meat_Weight~Shell_Height|SAMS_region_2015,data=example2,
ylab="Meat Weight (g)",xlab="Shell Height (mm)",
type = "p", col = "red", pch = 3,
key = foo_key)
## ... and carry on with your code, adding a layer and printing the whole thing
foo <- foo +
as.layer(xyplot(model_predict~Shell_Height|SAMS_region_2015,
type = "l", data = example1, col = "blue", lwd = 4, lty = 3))
foo