2015-01-31 2 views
1

Я очень новичок в R и сделал заполненный график контура с использованием интерполированных данных, таких как данные, найденные в Plotting contours on an irregular grid. Используя некоторые примеры данных из Plotting contours on an irregular grid, я сделал filled.contour и простую диаграмму рассеяния, используя следующие кодыR: Построение диаграммы рассеяния по заполненному графику.

x <- datr$Lat 
y <- datr$Lon 
z <- datr$Rain 

require(akima) 
fld <- interp(x,y,z) 
filled.contour(fld) 
plot(x,y) 

Есть ли способ, чтобы сделать сюжет (х, у) и filled.contour (ДПД) на том же сюжет (наложение)? Я пробовал точки (x, y), но это не соответствует осям x и y. В Matlab, я считаю, я сделал бы это с удержанием, но я не уверен, как это сделать на R.

Спасибо!

ответ

1

Вы можете использовать аргументы plot.title или plot.axes для этого:

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 
filled.contour(x, y, volcano, plot.title = { 
    points(x = 200, y = 200) 
}) 

(via)

+0

Да, интересно, я получил желаемый результат, но теперь мне не хватает ни моего сюжета, ни сюжетных осей (в зависимости от того, какой аргумент я заменил). Любые предложения о том, как все это иметь? – KHeal

+0

Просто добавьте 'title (" my title ")' before/after 'points()' или 'axis (1); оси (2) 'соответственно. – lukeA

+0

Удивительный, спасибо за это легко исправить! – KHeal

0

Один из способов, чтобы прочитать код filled.contour и сделать немного хакерство так:

сделать вашу фигуру:

filled.contour(fld) 

Определите эти константы, скопировав их из списка аргументов.

nlevels = 20 
zlim = range(z, finite = TRUE) 
las = 1 
levels = pretty(zlim, nlevels) 
xlim = range(x, finite = TRUE) 
ylim = range(y, finite = TRUE) 
xaxs = "i" 
yaxs = "i" 
asp = NA 

Расчет этих значений путем копирования кода из тела функции

mar.orig <- (par.orig <- par(c("mar", "las", "mfrow")))$mar 
w <- (3 + mar.orig[2L]) * par("csi") * 2.54 

Установите макет путем копирования кода из тела функции

layout(matrix(c(2, 1), ncol = 2L), widths = c(1, lcm(w))) 

Noteice, что цифра на самом деле нанесены после того, как цветовая шкала, , но мы не будем отменять порядок компоновки, потому что layout фактически устанавливает область «тока» в качестве последнего региона, потому что первый вызов на plot.new приведет к тому, что текущая область обернется вокруг в первую область. Следовательно, когда вы устанавливаете окно графика и выстраиваете точки через:

plot.window(ylim=ylim,xlim=xlim) 
points(x,y) 
title(main='title', 
     sub='Sub-Title', 
     xlab='This is the x axis', 
     ylab='This is the y axis') 

Они накладываются на фигуру по желанию.

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