2015-09-21 2 views
0

У меня есть levelplot, который генерируется из простого 3-х столбчатого CSV-файла. Столбец X - расстояние вдоль дорожки, Y - глубина воды, Z - температура воды. Так как функция levelplot не знает о фактической глубине дна, она будет интерполировать значения ниже морского дна. Я хотел бы наложить заполненную область, чтобы заслонять эти ценности и изобразить морской пол. У меня есть возможность добавить фактические глубины дна вдоль дорожки к моему файлу csv, или я могу создать вторую серию данных. Я не уверен, как добавить накладку. Буду признателен за любую оказанную помощь.Оверлей области области в R-графике

Вот мой сценарий г:

d<-read.csv("D:/R_plots/temp_data.csv",header=F,col.names=c("X","Y","Z")) library(latticeExtra) col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 'orange', 'red')) col.divs<-20 levelplot(Z ~ X * Y, d, cuts=50, contour=TRUE, xlab="Distance", ylab="Depth (m)", main="Temperature", col.regions=col.l, at=seq(from=0,to=6,length=col.divs), panel=panel.2dsmoother, args=list(span=0.5))

Это пример того, что я в настоящее время: enter image description here

И вот что я пытаюсь произвести: enter image description here

+1

это может помочь http://stackoverflow.com/questions/8304538/can-one- use-polygon-or-equal-in-lattice-and-ggplot2-plot – user20650

+0

Спасибо @ user20650, который указал мне в правильном направлении. Я смог использовать функцию решетки, чтобы добавить панель xyarea с нужной графикой. –

ответ

1

Моим решением было использовать функцию решетки, чтобы добавить панель xyarea. Батиметрические данные загружаются из отдельного файла и накладываются на уровень.

Вот пример кода:

data<-read.csv("D:/R_plots/temp_data.csv", 
header=F,col.names=c("X","Y","Z")) 
bathy<-read.csv("D:/R_plots/Bathy.csv",header=F,col.names=c("A","B")) 
library(latticeExtra) 
col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 
'orange', 'red')) 
col.divs<-20 
levelplot(Z ~ X * Y, d, cuts=50, contour=TRUE, 
     xlab="Distance (m)", ylab="Depth (m)", 
     main="Temperature", col.regions=col.l, 
     at=seq(from=-3,to=10,length=col.divs), 
     panel=panel.2dsmoother, args=list(span=0.2)) 
trellis.focus("panel",1,1) 
do.call("panel.xyarea", 
     list(x=c(unlist(bathy["A"])), y=c(unlist(bathy["B"])), 
     col="gray34",groups = NULL,origin = NULL)) 
trellis.unfocus() 

Вот пример вывода:

enter image description here

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