Форматирование меток оси карты в 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()