2012-09-06 23 views
17

Cuando creo el siguiente gráfico obtengo un espacio indeseado entre el área de trazado y el eje (es decir, el espacio en blanco entre el cuadro azul y el eje x. ¿Cómo puedo eliminar este espacio y hacer el el trazado de la zona a ras de la ejes de los gráficos? Gracias.Eliminar el espaciado alrededor del área de trazado en r

xleft<-c(1,2,2.5) 
xright<-c(2,2.5,2.75) 
ybottom<-c(1,2,2.5) 
ytop<-c(2,2.5,2.75) 

par(mar = c(15,15,2.75,2.75) + 0.1) 
plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab") 
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green")) 

#Label position along axes 
x.label.position<-(xleft+xright)/2 
y.label.position<-(ybottom+ytop)/2 

#Labels 
x.label<-c("Long species Name1","Long species Name2","Long species Name3") 
y.label<-c("Long species Name4","Long species Name5","Long species Name5") 

text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1) 
text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90) 

par(xpd=TRUE) 
legend(-0.1,0,legend=c("Species A","Species B","Species C"),fill=c("blue", "red", "green")) 

enter image description here

ACTUALIZACIÓN me trató la sugerencia de plannapus con mis datos reales, pero sólo se puede conseguir el eje y que se comporten hay alguna otra cosa en este ¿Hay un fragmento de código que agrega espacio a los lados del área de trazado?

quartz("colour.plot") 
par(mar=c(15,15,4,2)+0.1)#sets margins of plotting area 

#create the data plot 
    plot(c(0,100), c(0,100), type = "n", main = paste(x,"vs",y," -",depth),xlab=paste("Species composition in remainder ",x),ylab=paste("Species composition in remainder ",y),asp=1,xaxs="i",yaxs="i") 

#Add the rectangles 
rect(mdf$xleft,mdf$ybottom,mdf$xright,mdf$ytop,col=mdf$colour) 

produce

enter image description here

+0

"¿Hay alguna otra cosa en este trozo de código que agrega espacio a los lados del área de trazado?" Sí: 'asp = 1'. Con esto, estás forzando que los ejes xey sean iguales, lo que probablemente esté en conflicto con el tamaño de la región de tu trazado. – plannapus

+0

añadiendo 'par (pty =" s ")' antes de la llamada a 'plot' debe forzar a la región de trazado a ser cuadrada (de ahí' "s" ') y no rectangular como en su imagen y por lo tanto corregir para' asp' "falla". – plannapus

+0

Creo que deberías ir a @plannapus answer, o simplemente configurar 'xlim',' ylim' para que coincida con la región que deseas trazar. Aunque la solución de @ Alan da la apariencia correcta, no es conceptualmente correcto para lo que quiere hacer aquí. Solo "cura el síntoma" por así decirlo. – Backlin

Respuesta

24

Existe un argumento en la función plot que maneja eso: xaxs (y yaxs para el eje y). Por defecto está configurado en xaxs="r", lo que significa que el 4% del valor del eje se deja en cada lado. Para establecer esto en 0: xaxs="i". Consulte la sección xaxs en ?par para obtener más información.

plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab", xaxs="i", yaxs="i") 
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green")) 

enter image description here

+0

@planapus Me gustaría utilizar su solución pero tengo problemas porque estoy usando asp = 1 que agrega espacio a ambos lados del eje x con su solución (vea el ejemplo bajo actualización en cuestión). ¿Hay alguna forma de evitar este problema? – Elizabeth

+0

@Elizabeth ¿Has probado 'par (pty =" s ")' como sugerí en los comentarios de arriba? (Idealmente, aunque la solución sería definir exactamente el tamaño de la región de trazado, pero eso es difícil de hacer) – plannapus

+0

Lo hice pero me di cuenta de que tenía un error en esa línea. Solucionado y ahora funciona. Gracias :) – Elizabeth

4
plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab",axes=F) # ann 
axis(1,pos=1) 
axis(2,pos=1) 

Todos los ejes son cortar y luego puede agregar nuevos ejes de la pos desea.

+0

Funciona correctamente, pero debe tenerse en cuenta que esta solución mueve los ejes pero no modifica el área de trazado. – plannapus

Cuestiones relacionadas