2013-10-10 7 views
3

Я пытаюсь манипулировать оси засечек на карте ВеликобританииR + OpenStreetMap + ggplot2 + изменение клещ отметки

map = openmap(upperLeft = c(60,-11), 
       lowerRight = c(49.5,3), type="mapquest-aerial") 
map2 <- openproj(map) 
autoplot(map2) + 
    xlab("Longitude") + ylab("Latitude") 

enter image description here Я попытался добавить что-то вроде этого:

scale_x_continuous(breaks=seq(-10,2,2), labels=paste(c(rev(seq(0,10,2)),2),c(rep("°W",5),"°","°E"),sep="")) 

I появится сообщение об ошибке: Шкала для 'x' уже присутствует. Добавление другой шкалы для «x», которая заменит существующий масштаб.

(вероятно потому, что масштаб задается в объекте на карте), и, хотя он добавляет метки, ось сдвигаются и образуется зазор слева и справа от участка: enter image description here Кто-нибудь знает, как я могу избавиться от этого серого пространства ???

R версия 3.0.0 Платформа: i386-w64-mingw32/i386 (32-разрядная версия)

ответ

4

Вы получили предупреждение о уже имеющейся оси х, так как функция autoplot.OpenStreetMap() (на самом деле вызывается autoplot()) уже есть scale_x_continuous() определено. Таким образом, вы создаете новую ось x.

Вы можете удалить серое пространство, просто добавив аргумент expand=c(0,0) к вашей функции масштабирования. Этот аргумент включен в функцию масштаба, которую использует autoplot().

+scale_x_continuous(breaks=seq(-10,2,2), labels=paste(c(rev(seq(0,10,2)),2), 
           c(rep("°W",5),"°","°E"),sep=""),expand=c(0,0)) 
+0

Блестящий, спасибо вам большое! Вы знаете, есть ли способ напрямую манипулировать 'autoplot', чтобы избежать сообщения об ошибке? –

+0

Это не ошибка, а предупреждение. Вы делаете свою собственную функцию для таких карт, но все равно вам нужно будет ее корректировать каждый раз. Поэтому используйте свой существующий подход и игнорируйте предупреждение. –

+0

Сделаю, еще раз спасибо! –

Смежные вопросы