Форматирование меток оси карты в R для отображения широты и долготы

Я пытаюсь нарисовать карту в R с метками долготы и широты на осях. Я использовал следующий код для рисования карты:

plot(countries, xlim=c(5,17), ylim=c(42,48),axes=FALSE)
#where xlim is the degrees east/west, and ylim north/south

На сюжете я подавил топоры, потому что я просто не хочу, чтобы они говорили "5, 6, 7 и т.д.", Мне нужно, чтобы они сказали "5 градусов E, 6 градусов E...", где "градусы" - это символ степени (т.е. верхний индекс o). Следующий скрипт делает это, но я хочу, чтобы он сказал "6 градусов E, 8 градусов E и т.д.".

axis(1, at=c(6,8,10,12,14,16), labels=c(expression(6*degree),expression(8*degree),
expression(10*degree),expression(12*degree),expression(14*degree),
expression(16*degree)))

Заранее спасибо.

2 ответа

Это работает, но я уверен, что это можно сделать более элегантным способом.

plot(c(), xlim=c(5,17), ylim=c(42,48),axes=FALSE) 
degs = seq(6,16,2)

Создайте строку bquote для каждого из элементов, заменив degree символом и x числом от degs:

a = sapply(degs,function(x) bquote(.(x)*degree ~ E))

expression вызова для каждого элемента в списке буклетов:

axis(1, at=degs, lab=do.call(expression,a))


Это определенно более элегантно, чем мое решение...

axis(1, at=c(6,8,10,12,14,16), 
 labels=c(expression(paste(6*degree,"E")),expression(paste(8*degree,"E")),
 expression(paste(10*degree,"E")),expression(paste(12*degree,"E")),
 expression(paste(14*degree,"E")),expression(paste(16*degree,"E"))))

licensed under cc by-sa 3.0 with attribution.