标签: lattice

如何绘制带有排序水平误差线的图表(带有错误标记的排序条形图)?

我想将平均值和标准误差绘制为水平条形图,我希望平均值排序.

我找到了使用晶格绘制水平排序条形图的方法,但我不知道如何添加错误标记.以下是我的数据和我提出的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)

plot r lattice

6
推荐指数
2
解决办法
3379
查看次数

限制格子图到视口?

我想在现有情节的一个小区域中拟合整个格子图.

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)

有没有办法将晶格图限制在设备上的预定义区域,就像上面的例子一样?

plot r viewport lattice r-grid

6
推荐指数
1
解决办法
844
查看次数

如何在格子布局中制作热图样式的双变量直方图?

以下示例数据为例:

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 lattice

6
推荐指数
1
解决办法
2073
查看次数

R - 线之间的颜色或阴影区域

我正在尝试使用R在Excel上制作的图表进行复制,这应该表示围绕时间序列预测的95%置信区间(CI).Excel图表如下所示:

在此输入图像描述

所以,基本上,原始的历史时间序列,并从某个时间点预测它可能与其各自的CI.

他们在Excel上完成的方式效率有点低:

  1. 我有四个时间序列,大部分时间重叠;
  2. 实际/历史时间序列(上面的蓝线)在预测开始时停止;
  3. 在预测期开始之前,预测(上面点缀为红色)只是隐藏在蓝色的预测之下;
  4. 然后我有一个时间序列表示CI的上限和下限之间的差异,它与Excel Stacked Areas图表一起使用,成为上图中的阴影区域.

显然,生成预测和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 …

r lattice confidence-interval xts timeserieschart

6
推荐指数
1
解决办法
793
查看次数

在格子xyplot上添加标签

我创建了一个带格子的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,基本上每个点都在不同的组中?还有另一种方法吗?

label r lattice

5
推荐指数
1
解决办法
1万
查看次数

覆盖R lattice parallelplot auto.key图例颜色

我使用晶格包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)

有关如何传递自定义图例颜色的任何想法?

r lattice

5
推荐指数
1
解决办法
2518
查看次数

使用来自晶格封装的xyplot()从线性回归绘制观察值和拟合值

我可以创建简单的图形.我想在同一图表上观察和预测值(来自线性回归).我绘制说YvariableVS Xvariable.只有1个预测变量,只有1个响应.我怎样才能将线性回归曲线添加到同一图表中?

所以总结需要帮助:

  • 绘制实际情况并预测两者
  • 绘制回归线

r lattice

5
推荐指数
1
解决办法
5万
查看次数

删除bwplot中的异常值

我正在创建一个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)

r lattice

5
推荐指数
1
解决办法
2129
查看次数

R levelplot删除外边框(调整图边框)

我正在使用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)

r lattice correlation levelplot

5
推荐指数
1
解决办法
3408
查看次数

levelplot框线宽R.

有没有人知道如何更改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)

r width lattice levelplot box

5
推荐指数
1
解决办法
4892
查看次数