Я пытаюсь построить растровую карту с некоторыми данными и маржинальные графики этих данных. Вид, как функция levelplot()
rasterVis
, или даже лучше с цветами (отражающими цвета внутри участка), а не с линией. Ниже будет ясно, что я пытаюсь сделать. rasterVis
пример (с линией плотности):Графические графики для geom_ растра() в ggplot2
Однако я хочу использовать ggplot2. Загрузите data used in this example (8KB).
Я пытался использовать grid.arrange()
:
library(ggplot2)
library(raster)
library(maps)
library(grid)
library(scales) #for muted()
library(gridExtra)
load("example.Rsave") #load data
#prepare data for the margin plot
var=tp_rlim; min=0; max=1; mid=0.5
varname <- colnames(var)[3]
zonal <- aggregate(var[,3], list(var$Lat), mean)
colnames(zonal) <- c("Lat", varname)
#plot the margin plot
ggzonal <- ggplot(zonal, aes(x="", y=Lat, fill=tp))+
geom_raster() +
theme(legend.position="none",
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank()
) +
scale_fill_gradient2(limits=c(min, max), space="Lab", midpoint=mid)
#plot main plot
gg <- ggplot(var, aes_string(x="Lon", y="Lat", fill=varname)) +
geom_raster() +
coord_quickmap(xlim = range(var$Lon), ylim = range(var$Lat)) +
scale_fill_gradient2(limits=c(min, max), space="Lab", midpoint=mid) +
theme(legend.position="bottom",
legend.key.width = unit(1.5, "cm"),
legend.key.height = unit(0.3, "cm"),
legend.title=element_blank()
) +
borders(region=unique(na.omit(map.where("world", var$Lon, var$Lat))), colour="black")
grid.arrange(gg, ggzonal, ncol=2, widths=c(5, 1))
Но результат неудовлетворителен:
Я также пытался использовать ggExtra::ggMarginal
, но:
ggExtra::ggMarginal(gg)
Или:
ggExtra::ggMarginal(gg, type="histogram")
Как я могу это сделать?
Тем не менее, вы видите, что правая колонка немного, короче короче? Я, к сожалению, перфекционист и не могу с этим поделать :( – AF7
панель имеет нужный размер, поэтому я думаю, что что-то не так с данными на этом сюжете. – baptiste
действительно, на участке RHS не было одинаковых ограничений y как другой – baptiste