标签: 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
查看次数

将错误栏添加到具有多个组的条形图

我有以下条形图,我想添加错误栏.

library(lattice)    
barchart(Change~fTreat,groups=Process,change,
          auto.key=list(points=FALSE,rectangles=TRUE),
          panel=function(x, y,...){
            panel.barchart(x,y,origin = 0,...);
            panel.abline(h=0,col="black",...);
            }
          )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我已经尝试使用memisc包中的panel.errbars,它对xyplots非常有用,但是当我将它添加到我的代码时它不尊重这些组.

library(memisc)    
barchart(cbind(Change,lower,upper)~fTreat,groups=Process,change,
     ylab="Pocertage change",
     ylim=-115:50,
     scales=list(alternating=FALSE,
                 tick.number=7,
                 tck=c(-1,0)),
     panel=function(x, y,groups,...){
       panel.barchart(x,y=change$Change,groups=change$Process,origin = 0,...);
       panel.abline(h=0,col="black",...);
       panel.errbars(x,y,make.grid="none",ewidth=0.2,type="n",...)
     }
     )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 有关如何使用panel.errbars或任何其他功能向我的绘图添加错误栏的任何想法?

数据:

    structure(list(Treat = structure(c(3L, 4L, 1L, 2L, 3L, 4L, 1L, 
2L), .Label = c("12-380", "12-750", "8-380", "8-750"), class = "factor"), 
    Process = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("Resp", 
    "Cal"), class = c("ordered", "factor")), Change = c(-33.05, 
    -34.74, 20.94, 18.06, 6.85, -28.57, -8.1, -78.72), upper …
Run Code Online (Sandbox Code Playgroud)

r bar-chart lattice

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

减少条形图中x轴刻度(标签)的数量

我正在使用格子包中的条形图.我有10年的时间序列数据,我希望x轴以%b-%Y的格式显示,每隔六个月.这在xyplot(给定日期DateVector的向量)中通过以下语法完成:

scales=list(x=list(format = "%b-%Y",tick.number = length(DateVector)/2))
Run Code Online (Sandbox Code Playgroud)

barchart忽略了设计因素的tick.number选项,因此x轴对于大量数据标签变得不可读.如何减少刻度和/或刻度标签的数量?

这是一个简单的例子,重现我的问题,数据跟随(将数据保存为Testrr.csv运行,如果这是错误的格式,这是我第一次道歉;)

library(lattice)

inptTrans <- read.csv("Testrr.csv")
inptTrans$NotherTime <- as.Date(as.character(inptTrans$TransDateS),"%m/%d/%Y")
xyp2 <- barchart (NumE+NumF~ NotherTime, data=inptTrans, main = sprintf("Total")
                  ,type='r',xlab = '',ylab='',col=c('red','black')
                  ,horizontal=FALSE
                  ,scales=list(x=list( rot=45,cex=1.0 ,
                                 labels=format(inptTrans$NotherTime,"%b-%Y"),tick.number=2)
                     )
                  ,key=list(text = list(c("Num F","Num E"))
                     ,rectangle=list(col=c('black','red') ),columns = 2
                     ,corner = c(0.05,-0.11),lty = c(1),lwd=3)
                  ,stack=TRUE
                  )

png(sprintf('Testrr.png'),width = 900, height = 750)
print(xyp2) 
dev.off()
Run Code Online (Sandbox Code Playgroud)

Testrr.csv:

TransDateS,NumTot,NumF,NumE
01/15/2003,339486,18478,293879
02/15/2003,343761,16430,295272
03/15/2003,413700,17924,356004
04/15/2003,432741,18260,377046
05/15/2003,465439,18721,406632
06/15/2003,490699,18276,424773
07/15/2003,507818,18354,440237
08/15/2003,506530,17391,437386
09/15/2003,481039,17809,411568
10/15/2003,483364,19507,412902
11/15/2003,392189,16308,329675
12/15/2003,444249,18342,367489
01/15/2004,364662,20009,308456
02/15/2004,389718,16894,329946
03/15/2004,511386,20207,434052
04/15/2004,525563,19867,452646
05/15/2004,538570,17557,463289
06/15/2004,620868,20386,535523
07/15/2004,581368,20844,500511
08/15/2004,580773,19687,495930
09/15/2004,523992,21322,442304 …
Run Code Online (Sandbox Code Playgroud)

r bar-chart lattice

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

R水平图和插值

几天前,我设法使用插值在脚本中使用以下命令制作水平图:

levelplot(jan~lon*lat,APM,main="Jan",panel=panel.levelplot.raster,interpolate=T)
Run Code Online (Sandbox Code Playgroud)

我偶然没有保留那个会话,只有脚本,所以我不可能通过历史记录并恢复我用过的所有命令.

现在,在加载latticeExtra之后,相同的命令会生成一个空图.另一方面,省略指令的最后两个元素,即:

levelplot(jan~lon*lat,APM,main="Jan")
Run Code Online (Sandbox Code Playgroud)

绘制图表.

我想在表面进行插值,但是出了点问题

panel=panel.levelplot.raster
Run Code Online (Sandbox Code Playgroud)

加载rasterVis时会发生相同的行为.我想我错过了什么......有什么帮助吗?

数据具有以下结构:

> head(APM)
    lat  lon  jan  feb  mar  apr  may  jun   jul   aug  sep  oct  nov  dec
1 -18.5 10.5 29.7 28.8 25.6 25.6 26.8 29.9  35.5  46.8 35.5 27.5 27.5 27.9
2 -17.5 10.5 28.8 29.8 26.3 26.2 27.8 31.6  39.7  63.1 40.4 27.6 27.6 28.3
3 -16.5 10.5 28.7 30.0 26.9 26.8 28.6 32.1  41.1 109.4 42.8 29.7 28.9 29.4
4 -15.5 10.5 28.4 29.5 27.5 26.9 29.1 34.2 …
Run Code Online (Sandbox Code Playgroud)

r lattice levelplot

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

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

以下示例数据为例:

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中包括格子图例图中的线和点

大家好,我正在格子图中工作,一切正常,但我对传奇有些麻烦.我正在使用xyplot(),它的工作原理很棒.我的数据框是NM(我dput()在最后部分添加了版本):

        AMes     A2009     A2010   A2011   A2012   A2013   A2014
1       enero  710004.3 1458624.4 6229245 4407423 3006568 1749746
2     febrero  889398.1  942099.6 5553163 4248144 2615730 1902865
3       marzo 1114883.1 1210951.2 6372920 3537103 2833299 1605746
4       abril 1419242.1 1151423.9 6755055 3500596 3438797 2116088
5        mayo 1585857.2 1598355.1 7119008 4049074 3224926      NA
6       junio 1010455.6 1370856.8 7585412 3279869 2794030      NA
7       julio 1292333.4 1420547.4 7258676 3420974 3003458      NA
8      agosto 1032443.3 2048291.1 7250944 2602310 2486932      NA
9  septiembre …
Run Code Online (Sandbox Code Playgroud)

r lattice

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

levelplot:如何在colorkey和x-axis标签之间添加空格

我试图用来levelplot绘制一个简单的数字高程模型(DEM).

这是我的代码:

r1 = raster("ned10dem.tif")
e = extent(460000,480000,4555000,4567500)
rr1 = crop(r1,e)
p = levelplot(rr1, scales=list(x=list(at=seq(450000,480000,4000))),
              margin=F, cuts=200,
              col.regions = terrain.colors(350,alpha=1), 
              colorkey=list(space="bottom"),
              xlab="Easting(m)", ylab="Northing(m)")
plot(p)
Run Code Online (Sandbox Code Playgroud)

情节最终看起来像这样:

levelplot

我无法弄清楚的是如何增加colorkey和x轴之间的空间,使得colorkey不会覆盖x轴标签.

r color-key lattice levelplot

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

R中的莱迪思包:是否可以开发交互式"散点图/网络"?

我正在开发一个交互式散点图,以便当用户滚动数据点时,会显示一个标签.但是,我还想在某些数据点之间添加边.

我成功地使用几个库开发了交互式散点图,包括grid,gridSVG,lattice和adegraphics.以下是MWE:

library(grid)
library(gridSVG)
library(lattice)
library(adegraphics)

x = rnorm(10)
y = rnorm(10)
dat = data.frame(label = letters[1:10], x, y)

customPanel2 <- function(x, y, ...) {
  for (j in 1:nrow(dat)) {
    grid.circle(x[j], y[j], r = unit(.5, "mm"),
                default.unit = "native",
                name = paste("point", j, sep = "."))
  }
}

xyplot(y ~ x, panel = customPanel2, xlab = "x variable", ylab=NULL, scales=list(tck = c(1,0), y=list(at=NULL)))

for (i in 1:nrow(dat)) {
  grid.text(as.character(dat$label)[i], x = 0.1, y = 0.01, just = c("left", "bottom"), name …
Run Code Online (Sandbox Code Playgroud)

svg interactive r lattice

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

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
查看次数