2012-11-13 21 views
5

Nie jestem pewien, czy to możliwe, rób to, co chcę. Chcę narysować oś X z dwiema skalami, jak na poniższym obrazku. Wielkie dzięki,Dwie skale na tej samej osi

enter image description here

+0

Byłby to być tylko dwie osobne działki, obok siebie z najbardziej na prawo p dużo bez osi Y? –

+0

tak, oczywiście. to proste i skuteczne rozwiązanie. Pozdrawiam, Rafael – Rafael

Odpowiedz

8

ggplot2 wersja może wyglądać następująco:

library(ggplot2) 

x = c(1,2,3,4,5, 10,20,30,40,50) 
y = c(1,2,2,3,4, 2,1,3,5,5) 
# You should introduce cond - condition to separate axises - by yourself 
df = data.frame(x=x,y=y,cond=ifelse(x>5,"x2","x1")) 

ggplot(df, aes(x,y,group=cond)) + geom_line() + geom_point(aes(shape=cond), size=4) + facet_grid(.~cond, scales="free_x") 

która produkuje tę działkę: enter image description here

+0

Ładne rozwiązanie, dzięki! – Rafael

1

Nie jestem całkowicie pewny, ale jako punkt wyjścia, przyjrzeć ?facet_grid() w ggplot2.

Uzyskanie dwóch działek obok siebie nie powinno być zbyt trudne. Wtedy prawdopodobnie chcesz wyłączyć, a następnie dodać oś tylna odpowiednich skal

poprosić Google o axis.line = theme_blank()

Powodzenia!

+0

Wielkie dzięki! Rafael – Rafael

7

Oto wersja wykorzystująca grafikę bazową R. Możesz prawdopodobnie grać z nim trochę więcej, aby uzyskać rzeczy, jak chcesz, ale to jest w zasadzie to, czego szukasz.

plot.new() 
par(mfcol=c(1,2)) 
plot(1:5,ann=FALSE,bty="n",type="l",ylim=c(0,25)) 
grid(ny=NA) 
par(mar=c(5.1, 0, 4.1, 2.1)) 
plot(c(10,20,30,40,50),c(8,5,15,20,20),yaxt="n",ann=FALSE,bty="n",type="l",ylim=c(0,25)) 
grid(ny=NA) 
par(new=TRUE) 
par(mfcol=c(1,1)) 
par(bty="l") 
par(mar=c(5.1, 4.1, 4.1, 2.1)) 
plot(NA,ylim=c(0,25),type="n",xaxt="n",yaxt="n",ann=FALSE) 
box() 
grid(nx=NA,ny=NULL) 

enter image description here

Edit- snazzed go trochę

+0

Czy mogę również zasugerować 'axis.break' z' plotrix'? [LINK] (http://uspace.shef.ac.uk/servlet/JiveServlet/showImage/2-12478-3980/gap_plot.png) +1 –

+0

Dzięki, ładnie. – Rafael

Powiązane problemy