2013-10-26 15 views
10

Voglio ottenere un asse X rotto nella mia trama. Nell'asse x mi piace inserire un simbolo dell'asse spezzato <//> [partendo da 2 e terminato a fine 8, il che significa che 2-8 sarà nascosto nel simbolo <//>] in modo che gli altri valori possano essere enfatizzati. In Matlab, questa attività viene eseguita utilizzando BreakXAxis. In R, plotrix la libreria aiuta solo a collegare un simbolo break-axis, tutto qui.Break X Axis in R

x <- c(9.45, 8.78, 0.93, 0.47, 0.24, 0.12) 
y <- c(10.72, 10.56, 10.35, 10.10, 9.13, 6.72) 
z <- c(7.578, 7.456, 6.956, 6.712, 4.832, 3.345) 
plot(x, y, col='blue', pch=16, xlab= 'x', ylab='y, z') 
points(x, z, col='red', pch=17) 
library(plotrix) 
axis.break(1,2,style="slash") 

risposta

11
xgap <- ifelse(x > 8, x-6, x) 
#Possibly you'd want to check if there are values between 2 and 8. 
plot(xgap, y, col='blue', pch=16, xlab= 'x', ylab='y, z', xaxt="n") 
points(xgap, z, col='red', pch=17) 
xat <- pretty(xgap) 
xat <- xat[xat!=2] 
xlab <- ifelse(xat>2, xat+6, xat) 
axis(1,at=xat, labels=xlab) 
library(plotrix) 
axis.break(1,2,style="slash") 

enter image description here

non fare questo. gap.plot fornisce un'alternativa leggermente migliore, ma probabilmente utilizzerei le faccette, ad es. Con ggplot2.

14

Sembra che avete bisogno gap.plot

library(plotrix) 
par(bty="n") # deleting the box 
gap.plot(x,y, gap=c(2,7.5), gap.axis="x", pch=16, 
     col="blue", ylim=range(c(y,z)), 
     xtics=c(0:3,8:10), xticlab=c(0:3,8:10)) 

gap.plot(x,z, gap=c(2,7.5), gap.axis="x", pch=17, 
     col="red", ylim=range(c(y,z)), add=TRUE); axis(2) 

abline(v=seq(1.99,2.09,.001), col="white") # hiding vertical lines 
axis.break(1,2,style="slash")    # plotting slashes for breakpoints 

enter image description here