我想将平均值和标准误差绘制为水平条形图,我希望平均值排序.
我找到了使用晶格绘制水平排序条形图的方法,但我不知道如何添加错误标记.以下是我的数据和我提出的R代码.
data <- structure(c(0.67, 0.67, 0.76, 0.66, 0.71, 0.6, 0.52, 0.6, 0.71, 0.76,
0.76, 0.71, 0.6, 0.61, 0.9, 0.5, 0.58, 0.84, 0.68, 0.88,
0.89, 0.96, 1, 0.95, 1, 1, 0.98, 0.78, 0.98, 1,
1, 0.99, 1, 1, 0.95, 0.92, 1, 0.91, 1, 0.87,
0.91, 0.72, 0.73, 0.55, 0.82, 0.87, 0.64, 0.75, 0.75, 1,
0.81, 0.79, 1, 0.74, 0.57, 0.84, 1, 0.95, 0.78, 0.95), .Dim = c(20L, 3L), .Dimnames = list(
c("1", "2", "3", "4", "5", "6", "7", "8", "9", …Run Code Online (Sandbox Code Playgroud) 我想在现有情节的一个小区域中拟合整个格子图.
xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a")
pushViewport(viewport(.2, .7, .2, .2))
grid.rect(gp=gpar(fill="white"))
Run Code Online (Sandbox Code Playgroud)
给我这个:

因此视口被推动.但是当再次调用晶格函数时,它会使用整个器件,就像调用grid.newpage():
xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a")
Run Code Online (Sandbox Code Playgroud)
有没有办法将晶格图限制在设备上的预定义区域,就像上面的例子一样?
以下示例数据为例:
x <- rnorm(10000)
y <- rnorm(10000) * x
z <- rnorm(10000) * y
df <- data.frame(x,y,z)
Run Code Online (Sandbox Code Playgroud)
我们可以生成散点图矩阵,如下所示:
splom(df)
Run Code Online (Sandbox Code Playgroud)

但由于大量的重叠点,很难测量密度.
是否有一种直接的方法用双变量直方图热图替换每个图,就像壁球产生的那样?
library(squash)
hist2(df$x, df$y)
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用R在Excel上制作的图表进行复制,这应该表示围绕时间序列预测的95%置信区间(CI).Excel图表如下所示:
所以,基本上,原始的历史时间序列,并从某个时间点预测它可能与其各自的CI.
他们在Excel上完成的方式效率有点低:
显然,生成预测和CI的计算速度更快,更容易推广和使用R,虽然我可以在R上完成任务然后只需复制Excel上的输出来绘制图表,在R中执行所有操作更好.
在问题的最后,我提供了dput()@MLavoie建议的原始数据.
在这里我加载的包(不确定你在这里需要它们,但它们是我经常使用的):
require(zoo)
require(xts)
require(lattice)
require(latticeExtra)
Run Code Online (Sandbox Code Playgroud)
对于前100行,我的数据如下所示:
> head(data)
fifth_percentile Median nintyfifth_percentile
2017-06-18 1.146267 1.146267 1.146267
2017-06-19 1.134643 1.134643 1.134643
2017-06-20 1.125664 1.125664 1.125664
2017-06-21 1.129037 1.129037 1.129037
2017-06-22 1.147542 1.147542 1.147542
2017-06-23 1.159989 1.159989 1.159989
Run Code Online (Sandbox Code Playgroud)
然后在100个数据点之后,时间序列开始发散,最后它们看起来像这样:
> tail(data)
fifth_percentile Median nintyfifth_percentile
2017-12-30 0.9430930 1.125844 1.341603
2017-12-31 0.9435227 1.127391 1.354928
2018-01-01 0.9417235 1.124625 1.355527
2018-01-02 0.9470077 1.124088 1.361420
2018-01-03 0.9571596 1.127299 1.364005
2018-01-04 0.9515535 1.127978 1.369536
Run Code Online (Sandbox Code Playgroud)
解决方案由DaveTurek提供
感谢DaveTurek,我找到了答案.但是,唯一不同的是,对于我的xts数据帧,显然,我需要先将每列转换为数字(with …
我创建了一个带格子的xyplot
library(lattice)
X1=c(5, -2, 1, -3)
X2=X1^2
names=paste("dot", 1:4, sep="")
xyplot(X2~X1, data=data.frame(X1, X2), pch=20, cex=1:4)
Run Code Online (Sandbox Code Playgroud)
现在我想为每个点添加一个标签(文本).信息在
names=paste("dot", 1:4, sep="")
Run Code Online (Sandbox Code Playgroud)
我试过以下没有成功
panel.text(x=X2, y=X1, names)
Run Code Online (Sandbox Code Playgroud)
或者,使用直接标签
library(directlabels)
p=xyplot(X2~X1,data=data.frame(X1, X2), pch=20, group=names, cex=1:4)
direct.label(p,smart.grid,FALSE)
Run Code Online (Sandbox Code Playgroud)
但是我不喜欢它因为我不得不分组使用group=names,基本上每个点都在不同的组中?还有另一种方法吗?
我使用晶格包parallelplot方法绘制数据并遇到生成图例的麻烦.我为绘图创建了一个自定义颜色矢量,但找不到传递它们的方法来覆盖图例中显示的默认颜色.虽然我已经没时间了,最终在Photoshop中修正了图例颜色,但我想学习在格子中执行此操作的正确方法.
以下是使用4列图例生成绘图的代码:
parallelplot(acc, horizontal.axis=FALSE, col=acc_colors, lwd=1.5, cex=2.5,
ylab="Accuracy (Min = 50%, Max = 100%)",
xlab="Activity (overall = average across activities)",
main="Human Activity Recognition Accuracy",
scales=list(cex=1),
auto.key=list(text=c("Test Set", "Test Subject", "Training Set", "Training Subject"),
title=" ",
space="top", columns=4, points=FALSE)
)
Run Code Online (Sandbox Code Playgroud)
有关如何传递自定义图例颜色的任何想法?
我可以创建简单的图形.我想在同一图表上观察和预测值(来自线性回归).我绘制说YvariableVS Xvariable.只有1个预测变量,只有1个响应.我怎样才能将线性回归曲线添加到同一图表中?
所以总结需要帮助:
我正在创建一个bwplot {lattice},我希望它不会显示异常值.这是示例代码:
m <- mtcars
m$gear <- factor(m$gear)
m$vs <- factor(m$vs)
m$am <- factor(m$am)
bwplot(drat ~ gear | am + vs,
data = m)
Run Code Online (Sandbox Code Playgroud) 我正在使用levelplot(晶格)在R中创建相关热图.我喜欢盒子之间的边界,但不喜欢外面,因为它会干扰情节边界.如何从框中删除外边框?
这是我的代码:
levelplot(matrix, border="black",
colorkey=list(height=.25, space="right", at=seq(-1, 1, .25), cuts=7),
scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)),
main="Leaf Correlations", xlab="", ylab="",
col.regions=scalebluered)
Run Code Online (Sandbox Code Playgroud)
这就是它的样子..我不喜欢边缘上的双线..

编辑:这是一个可重复的例子:
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right",
at=seq(-1, 1, .25), cuts=7),
scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)),
xlab="", ylab="")
Run Code Online (Sandbox Code Playgroud) 有没有人知道如何更改levelplot图形的线宽,特别是多个面板的线宽?箱线宽度应与刻度线一起变化.在基地R可以使用plot(x);box(lwd=10).
这是否可以在levelplot中?
非常感谢.
library(rasterVis)
mycolors=c("darkred","red3", "orange", "yellow", "lightskyblue",
"royalblue3","darkblue")
s <- stack(replicate(6, raster(matrix(runif(100), 10))))
levelplot(s, layout=c(3, 2), col.regions=mycolors, index.cond=list(c(1, 3, 5, 2, 4, 6)))
Run Code Online (Sandbox Code Playgroud)