Каркас: легенда цветов с несколькими поверхностями и прозрачностью
Следующий код строит 3 цветных плоскости, используя функцию каркаса решетки. Однако я не могу понять, почему легенда не меняется, устанавливая цветовые группы. Я пытался сделать это вручную, но в итоге я изменил цвет текста. Кстати, кто-нибудь также знает, как сделать поверхность прозрачной на 70%?
library(lattice)
library(akima)
SurfaceData <- data.frame(
x=rep(seq(0,100,length.out=10),each=10,times=3),
y=rep(rep(seq(0,100,length.out=10),times=10),times=3),
z=c(rep(25,100),seq(30,70,length.out=100),seq(95,75,length.out=100)),
type=factor(rep(c("A","B","C"),each=100))
)
wireframe(z~x*y,data=SurfaceData,group=type,
col.groups=c("red","green","blue"),
scales = list(arrows=FALSE, col="black",font=10),
xlab = list("Variable X",rot=30),
ylab = list("Variable Y",rot=-30),
zlab = list("Variable Z",rot=90),
zlim = c(0,100),
#auto.key=TRUE,
auto.key=list(text=c("A","B","C"),col=c("red","green","blue"),lines=TRUE),
par.settings = list(axis.line = list(col = "transparent")),
)
Результат:
Спасибо!
2 ответа
Решение
Чтобы изменить цвета линий, вы должны заменить auto.key
с key
и предоставить список значений для текстов и строк.
wireframe(z~x*y,data=SurfaceData,group=type,
col.groups=c("red","green","blue"),
scales = list(arrows=FALSE, col="black",font=10),
xlab = list("Variable X",rot=30),
ylab = list("Variable Y",rot=-30),
zlab = list("Variable Z",rot=90),
zlim = c(0,100),
key=list(text=list(c("A","B","C"),col=c("red","green","blue")),
lines=list(lty=c(1,1,1),col=c("red","green","blue"))),
par.settings = list(axis.line = list(col = "transparent")),
)
Чтобы сделать цвета прозрачными, вы можете использовать функцию rgb()
, Здесь я определяю новую переменную mycolors.trans
которые содержат прозрачные цвета и mycolors
с теми же цветами, но не прозрачными для записей легенды.
mycolors.trans = rgb(c(255,0,0),
c(0,255,0),
c(0,0,255),alpha = 70,maxColorValue = 255)
mycolors = rgb(c(255,0,0),
c(0,255,0),
c(0,0,255),maxColorValue = 255)
wireframe(z~x*y,data=SurfaceData,group=type,
col.groups=mycolors.trans,
scales = list(arrows=FALSE, col="black",font=10),
xlab = list("Variable X",rot=30),
ylab = list("Variable Y",rot=-30),
zlab = list("Variable Z",rot=90),
zlim = c(0,100),
#auto.key=TRUE,
key=list(text=list(c("A","B","C"),col=mycolors),
lines=list(lty=c(1,1,1),col=mycolors)),
par.settings = list(axis.line = list(col = "transparent")),
)
Увидеть?simpleTheme
для прозрачной части
par.settings = simpleTheme(alpha = 0.7)