Форматирование меток оси карты в 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 градусов по Фаренгейту, 8 градусов по Фаренгейту и т.д..."

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)))

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

3 ответа

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

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

Создайте строку цитаты для каждого элемента, заменив 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"))))

использовать это:

      plot(shp, col="red", border="red", xlim=c(40.01,40.2), 
ylim=c(-1.6,-1.4), xaxs="i", yaxs="i")
plot(pw, add=TRUE, col="blue", border="blue")
sp::degAxis(side = 1, las=1, at = seq(40.01,40.2,0.05))
sp::degAxis(side = 2,las = 1, at=seq(-1.6,1.4,0.1))
box()
Другие вопросы по тегам