限定:
df <- data.frame(
line1 = rep(seq(1,5,by=1),2),
line2 = rep(seq(2,6,by=1),2),
index = rep(seq(1,5,by=1),2),
factor=rep(c("a","b"),each=5))
Run Code Online (Sandbox Code Playgroud)
其中line1和line2是两个变量,比如身高和体重.
这是我想要的每个面板的简单样式(我还想更改点标记的大小,但不使用如何):
plot(df$line1[df$factor=="a"], type = "o", ylim=c(0,6))
lines(df$line2[df$factor=="a"], type = "o", lty=2, pch=0)
Run Code Online (Sandbox Code Playgroud)
当我尝试这个:
library(lattice)
xyplot(c(line1,line2)~index|factor,data=df,type="o")
Run Code Online (Sandbox Code Playgroud)
该程序将所有点视为属于一行.
此外,我不知道如何提供绘图样式的参数来获得所需的结果.
PS1.令人惊讶的是,我已经用Google搜索并发现了许多散点图(线性拟合,密度等)和格子图的直方图示例,但这不是我想要做的简单事情之一.
PS2.我想标记这个问题,trellis但没有声誉点来创建标记.有志愿者吗?
我尝试在带有多个面板的格子条形图中为条形添加标签.我最终得到的标签太多了(每个标签都在每个面板中).
这是我的代码:
library(lattice)
data(iris)
barchart(seq(1,50) ~ Petal.Width + Petal.Length | Species, data = iris, stack = TRUE,
panel=function(x, y, ...) {
panel.barchart(x, y, ...);
ltext(x=iris$Petal.Width/2, y=y, labels=iris$Petal.Width, cex = 0.5);
ltext(x=iris$Petal.Width + iris$Petal.Length/2, y=y, labels=iris$Petal.Width, cex = 0.5);
}
)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
奖金的问题:
除了如预期它不工作,我想我的代码是不是太有效率(特别是seq(1,50)和Petal.Width + Petal.Length).有没有更好的办法?
先感谢您!!!
我在这里遇到了一些麻烦,请帮助我.我有这些数据
set.seed(4)
mydata <- data.frame(var = rnorm(100),
temp = rnorm(100),
subj = as.factor(rep(c(1:10),5)),
trt = rep(c("A","B"), 50))
Run Code Online (Sandbox Code Playgroud)
和这个适合他们的模型
lm <- lm(var ~ temp * subj, data = mydata)
Run Code Online (Sandbox Code Playgroud)
我想用格子绘制结果并拟合回归线,用我的模型预测,通过它们.为此,我正在使用这种方法,概述了D. Sarkar的"电力使用的格子技巧"
temp_rng <- range(mydata$temp, finite = TRUE)
grid <- expand.grid(temp = do.breaks(temp_rng, 30),
subj = unique(mydata$subj),
trt = unique(mydata$trt))
model <- cbind(grid, var = predict(lm, newdata = grid))
orig <- mydata[c("var","temp","subj","trt")]
combined <- make.groups(original = orig, model = model)
xyplot(var ~ temp | subj,
data = combined,
groups = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用网格库的densityplot功能来显示一些数据.我的数据集非常杂乱,所以我想减少底部绘制的符号的alpha值(这样可以在过度绘图的情况下获得更清晰的视图).但是,我似乎无法改变那些符号的alpha值而不会使实际密度曲线同样不透明.我使用的是图形的par.settings选择和设定不同的值superpose.line和superpose.symbol(和工程变更线的种类及符号,但由于某种原因未阿尔法值).我用虹膜数据集做了一个小例子来说明我的问题/当前的方法.如果有人有任何建议我会非常感激.
library(lattice)
data(iris)
graph.settings <- list(superpose.line = list(lty = 1:3, lwd = 2, alpha = 1),
superpose.symbol = list(pch = 1:3, alpha = 0.3))
densityplot( ~ Sepal.Length, data = iris, groups = Species,
auto.key = list(columns = 3), aspect = 1,
main = "Density Plot of Sepal Lengths", xlab = "Length (mm)",
par.settings = graph.settings)
Run Code Online (Sandbox Code Playgroud) 如何在格子图的内部而不是外部绘制刻度线。“ tcl = 0.5”似乎可以正常绘制;但是不适用于我的点阵图。
我想在莱迪思中复制的示例:

谢谢!
请考虑以下数据:
Income2<-structure(list(X = 1:30, Education = c(21.5862068965517, 18.2758620689655,
12.0689655172414, 17.0344827586207, 19.9310344827586, 18.2758620689655,
19.9310344827586, 21.1724137931034, 20.3448275862069, 10, 13.7241379310345,
18.6896551724138, 11.6551724137931, 16.6206896551724, 10, 20.3448275862069,
14.1379310344828, 16.6206896551724, 16.6206896551724, 20.3448275862069,
18.2758620689655, 14.551724137931, 17.448275862069, 10.4137931034483,
21.5862068965517, 11.2413793103448, 19.9310344827586, 11.6551724137931,
12.0689655172414, 17.0344827586207), Seniority = c(113.103448275862,
119.310344827586, 100.689655172414, 187.586206896552, 20, 26.2068965517241,
150.344827586207, 82.0689655172414, 88.2758620689655, 113.103448275862,
51.0344827586207, 144.137931034483, 20, 94.4827586206897, 187.586206896552,
94.4827586206897, 20, 44.8275862068966, 175.172413793103, 187.586206896552,
100.689655172414, 137.931034482759, 94.4827586206897, 32.4137931034483,
20, 44.8275862068966, 168.965517241379, 57.2413793103448, 32.4137931034483,
106.896551724138), Income = c(99.9171726114381, 92.579134855529,
34.6787271520874, 78.7028062353695, 68.0099216471551, 71.5044853814318, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用组和面板创建线图,这些组和面板将符号叠加在每个组的第一个值上.此尝试仅绘制第一组的第一个点,而不对其他两个组执行任何操作.
library(lattice)
foo <- data.frame(x=-100:100, y=sin(c(-100:100)*pi/4))
xyplot( y~x | y>0, foo, groups=cut(x,3),
panel = function(x, y, subscripts, ...) {
panel.xyplot(x, y, subscripts=subscripts, type='l', ...)
# almost but not quite:
panel.superpose(x[1], y[1], subscripts=subscripts, cex=c(1,0), ...)
} )
Run Code Online (Sandbox Code Playgroud)
可以理解一般解决方案,以允许绘制每个组和面板内的特定点(例如,第一,中间和端点).

我想更改默认的xyplot设置,其中轴标签按面板交替显示。
xyplot(yield~N | P+K, data=npk)
Run Code Online (Sandbox Code Playgroud)

我意识到这是有意避免在相邻面板上重叠极端轴的方法,但是对于如上所示的分类x轴标签,这是不必要的,对于发布来说看起来很奇怪。
有没有一种方法可以将所有轴标签放在如下所示的同一侧(我在图形程序中编辑过)?

考虑一个格子xyplot有relation='fixed',alternating=FALSE和as.table=TRUE。
如果面板的最后一行不完整(即,面板数少于布局的列数),则不会绘制x轴。例如,下图中的面板4没有x轴刻度/标签。
library(lattice)
d <- data.frame(x=runif(100), y=runif(100), grp=gl(5, 20))
xyplot(y~x|grp, d, as.table=TRUE, scales=list(alternating=FALSE, tck=c(1, 0)))
Run Code Online (Sandbox Code Playgroud)
如何添加该轴?
理想情况下,我只希望轴在底部和左侧,而面板的不完整行在底部(与使用时不同as.table=FALSE,后者在顶部绘制不完整的行)。对于上面的示例,我希望将轴绘制在面板4的底部边框上,而不是与面板5的x轴对齐。
我知道可以通过例如基本图形方法轻松解决。我对晶格解决方案特别感兴趣。
levelplot函数使用方框的所有侧面绘制带有刻度线的热图。我想在x和y轴上保留刻度线,但删除顶部和右侧的刻度线。
如何删除框周围的右边框和顶部边框?
#fake data
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
library('lattice')
levelplot(cars.corr, xlab="car stuff",ylab="Car Stuff", main="car stuff")
Run Code Online (Sandbox Code Playgroud)