我想根据高程将多边形层切割成两部分(上部和下部).多边形可能是凸的或凹的,并且要切割的位置可能彼此不同.轮廓线的间隔为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)
提前谢谢〜
马尔科
我有一个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) 我需要针对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) 我想用测试的标签输出来标记我的图,例如,使用 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 ?

我对ggplot2很新,所以请原谅我,如果这篇文章太愚蠢了.我使用以下代码绘制数据,但我无法获得发布所需的样式.
在输出中,我需要:
一个传奇.在我的数据案例中,在opts(legend.position="top")我不知道为什么之后没有任何内容.而且我也想传说分成3列样columns=3的auto.key格子
fill=c("white","grey20","grey70")根据因素使用灰色系统(例如)着色条pl,但似乎我无法改变样式scale_colour_manual
将x轴上的标签转为水平.
也许是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)

**编辑:**很抱歉,但情况可能比我所展示的要复杂一些。但是,您的两个脚本都可以工作,尽管由于点重叠,第一个脚本对于大型数据集可能不太清楚!非常感谢萨莎!
我想首先显示几个变量对,然后叠加同一数据集的选定数据。通常,可以使用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(),但我不知道它是否真的有效,以及如何有效。有人可以提供一些建议吗?