小编Mar*_*rco的帖子

使用多边形图层下方的轮廓线剪切多边形

我想根据高程将多边形层切割成两部分(上部和下部).多边形可能是凸的或凹的,并且要切割的位置可能彼此不同.轮廓线的间隔为5米,这意味着我可能需要生成具有更多浓缩轮廓线的轮廓,例如1米间隔.有关如何做到这一点的想法,更好的在ArcGIS或R?以下是Q的运行示例:

library(sp)
library(raster)
r<-raster(ncol=100,nrow=100)
values(r)<-rep(1:100,100)
plot(r)   ### I have no idea why half of the value is negative...
p1<-cbind(c(-100,-90,-50,-100),c(60,70,30,30,60))
p2<-cbind(c(0,50,100,0),c(0,-25,10,0))
p1p<-Polygons(list(Polygon(p1,hole=T)),"p1")
p2p<-Polygons(list(Polygon(p2,hole=T)),"p2")
p<-SpatialPolygons(list(p1p,p2p),1:2)
plot(p,add=T)
segments(-90,80,-90,20)  ##where the polygon could be devided
segments(50,20,50,-30)  ##
Run Code Online (Sandbox Code Playgroud)

提前谢谢〜

马尔科

gis cut r polygons contour

9
推荐指数
1
解决办法
3648
查看次数

使用xyplot进行三因素绘图

我有一个ggplot的问题,我无法解决,所以也许这里有人可以指出原因.很抱歉,我无法上传我的数据集,但可以在下面找到一些数据描述.ggplot的输出如下所示,除NO行外,其他所有内容都可以.

> all.data<-read.table("D:/PAM/data/Rural_Recovery_Edit.csv",head=T,sep=",")
> all.data$Water<-factor(all.data$Water,labels=c("W30","W60","W90"))
> all.data$Polymer<-factor(all.data$Polymer,labels=c("PAM-0  ","PAM-10  ","PAM-40  "))
> all.data$Group<-factor(all.data$Group,labels=c("Day20","Day25","Day30"))
> dat<-data.frame(Waterconsump=all.data[,9],Water=all.data$Water,Polymer=all.data$Polymer,Age=all.data$Group)

> ggplot(dat,aes(x=Water,y=Waterconsump,colour=Polymer))+
+ stat_summary(fun.y=mean, geom="line",size=2)+
+ stat_summary(fun.ymin=min,fun.ymax=max,geom="errorbar")+#,position="dodge"
+ facet_grid(~Age)

> dim(dat)
[1] 108   4
> head(dat)
  Waterconsump Water  Polymer   Age
1         10.5   W30 PAM-10   Day20
2         10.3   W30 PAM-10   Day20
3         10.1   W30 PAM-10   Day20
4          7.7   W30 PAM-10   Day20
5          8.6   W60 PAM-10   Day20
6          8.4   W60 PAM-10   Day20
> table(dat$Water)

W30 W60 W90 
 36  36  36 
> table(dat$Polymer)

 PAM-0   PAM-10   PAM-40   
      36       36       36 …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

4
推荐指数
1
解决办法
2657
查看次数

拆分上下部分的图,进行3阶段条形图绘制

我需要针对3个因素绘制地上和地下生物量.对于每个生物量,我能够使用来自格子的条形图绘制它,但是,我不知道绘制其中的两个,即正面的地上生物量,以及Y轴的地理部分的地下生物量.这是我的数据的测试代码,其中A,B,C是全因子因子:

library(lattice)
above <- runif(108)
below <- runif(108)
A <- rep(c("ab", "bc", "cd"), each=36)
B <- rep(1:3, 36)
C <- gl(3, 4, 108, c(30, 60, 90))

barchart(above~A|B+C)
barchart(below~A|B+C)

#This is what I used to do for two factors using barplot
par(mfrow=c(2, 1), mai=c(0, 1, 0.5, 0.5))
agg.abv <- aggregate(above, by=list(A, B), mean)
abv <- matrix(agg.abv[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
agg.bel <- aggregate(below, by=list(A, B), mean)
bel <- matrix(agg.bel[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
barplot(abv, beside=T, ylim=c(0, 1))
barplot(abv, beside=T, ylim=c(1, 0)) …
Run Code Online (Sandbox Code Playgroud)

plot r bar-chart lattice

3
推荐指数
1
解决办法
392
查看次数

如何使用另一个测试结果中的标签来标记 ggplot 中的条形图?

我想用测试的标签输出来标记我的图,例如,使用 agricolae 库中的 LSD.test 进行 LSD 测试输出(a、b、ab 等)。这是运行的示例。

library(ggplot2) 
library(agricolae)
wt<-gl(3,4,108,labels=c("W30","W60","W90")) 
pl<-gl(3,12,108,labels=c("P0","P1","P2")) 
gp<-gl(3,36,108,labels=c("A","B","C")) 

dat<-cbind(
  A=runif(108),
  B=runif(108,min=1,max=10),
  C=runif(108,min=100,max=200),
  D=runif(108,min=1000,max=1500)
) 
dat.df<-data.frame(wt,pl,gp,dat) 
dat.m<-melt(dat.df) 

ggplot(dat.m,aes(x=wt,y=value,group=pl,facet=gp,fill=pl))+         
  stat_summary(fun.y=mean,geom="bar",size=2,position="dodge")+         
  stat_summary(fun.ymin=function(x)(mean(x)-sd(x)/sqrt(length(x))),geom="errorbar", 
  fun.ymax=function(x)(mean(x)+sd(x)/sqrt(length(x))),position="dodge")+
  facet_grid(variable~facet,scale="free_y")+ 
  opts(legend.position="top")+                      
  scale_colour_manual(values = c("red", "blue", "green"))
Run Code Online (Sandbox Code Playgroud)

通常,在其他库中,我测试数据,并将标签传递给文本图,但是可以在 ggplot 中做到这一点吗?例如,在 stat_summary() 中,使用 fun.y 中的 LSD.test ?

情节例如

r ggplot2

2
推荐指数
1
解决办法
5542
查看次数

自定义ggplot输出(颜色,外观等)

我对ggplot2很新,所以请原谅我,如果这篇文章太愚蠢了.我使用以下代码绘制数据,但我无法获得发布所需的样式.

在输出中,我需要:

  1. 一个传奇.在我的数据案例中,在opts(legend.position="top")我不知道为什么之后没有任何内容.而且我也想传说分成3列样columns=3auto.key格子

  2. fill=c("white","grey20","grey70")根据因素使用灰色系统(例如)着色条pl,但似乎我无法改变样式scale_colour_manual

  3. 将x轴上的标签转为水平.

  4. 也许是y轴?但是,你认为这是必要的吗?

顺便说一句,我不知道如何准备出版物,所以,任何建议都是非常受欢迎的!

library(ggplot2)
wt<-gl(3,4,108,labels=c("W30","W60","W90"))
pl<-gl(3,12,108,labels=c("P0","P1","P2"))
gp<-gl(3,36,108,labels=c("A","B","C"))
dat<-cbind(A=runif(108),B=runif(108,min=1,max=10),C=runif(108,min=100,max=200),D=runif(108,min=1000,max=1500))
dat.df<-data.frame(wt,pl,gp,dat)
dat.m<-melt(dat.df)
ggplot(dat.m,aes(x=wt,y=value,group=pl,facet=gp,fill=pl))+
        stat_summary(fun.y=mean,geom="bar",size=2,position="dodge")+
        stat_summary(fun.ymin=function(x)(mean(x)-sd(x)/sqrt(length(x))),geom="errorbar",
                    fun.ymax=function(x)(mean(x)+sd(x)/sqrt(length(x))),position="dodge")+
                    facet_grid(variable~facet,scale="free_y")+ opts(legend.position="top")+ 
                    scale_colour_manual(values = c("red", "blue", "green")) 
Run Code Online (Sandbox Code Playgroud)

我的输出

r colors legend ggplot2

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

根据条件叠加对图

**编辑:**很抱歉,但情况可能比我所展示的要复杂一些。但是,您的两个脚本都可以工作,尽管由于点重叠,第一个脚本对于大型数据集可能不太清楚!非常感谢萨莎!

我想首先显示几个变量对,然后叠加同一数据集的选定数据。通常,可以使用par(new=T)如下方式实现叠加:

h<-rnorm(nc)  # this variable was used for conditioning
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)
pairs(m)
par(new=T)
pairs(m[h>0.7,],col="red")
Run Code Online (Sandbox Code Playgroud)

然而,该设置似乎par()不适用于这种用途。

那么,格子库可能会有所帮助,例如。splom(),但我不知道它是否真的有效,以及如何有效。有人可以提供一些建议吗?

r par lattice

0
推荐指数
1
解决办法
1609
查看次数

标签 统计

r ×6

ggplot2 ×3

lattice ×2

plot ×2

bar-chart ×1

colors ×1

contour ×1

cut ×1

gis ×1

legend ×1

par ×1

polygons ×1