histograma ggplot density and r ggplot2 density-plot

density - histograma ggplot r



ggplot_stat_density2d parcelas para distribución ecológica (1)

Mi enfoque para su pregunta es pragmático: simplemente ponga la capa de países del golfo sobre la distribución del mapa de calor. Esto cosecha el mapa de calor en consecuencia. Tenga en cuenta, sin embargo, que el mapa de calor todavía se calcula como si no hubiera sido recortado. Eso significa que el cálculo de la densidad no se limita solo al cuerpo de agua, sino que simplemente se recorta visualmente.

En aras de la reproducibilidad, el siguiente código asume que ha descomprimido el archivo .rar proporcionado por @Hammao y ejecuta el código en la carpeta Persian Gulf resultante.

# get sample data sample.data <- read.csv("sample.data3.csv")

Ahora, necesitamos obtener las formas del país para los países del Golfo. Yo uso el paquete rworldmap para esto.

# loading country shapes library(rworldmap) # download map of the world worldmap <- getMap(resolution = "high") # note that for ''resolution="high"'' # you also need the "rworldxtra" pkg # extract Persian Gulf countries... gulf_simpl <- worldmap[worldmap$SOVEREIGNT == "Oman" | worldmap$SOVEREIGNT == "Qatar" | worldmap$SOVEREIGNT == "United Arab Emirates" | worldmap$SOVEREIGNT == "Bahrain" | worldmap$SOVEREIGNT == "Saudi Arabia" | worldmap$SOVEREIGNT == "Kuwait" | worldmap$SOVEREIGNT == "Iraq" | worldmap$SOVEREIGNT == "Iran", ] # ... and fortify the data for plotting in ggplot2 gulf_simpl_fort <- fortify(gulf_simpl) # Now read data for the Persian Gulf, which we need to get the distances for # the extension of the map PG <- readOGR(dsn = ".", "iho") PG <- readShapePoly("iho.shp") PG <- fortify(PG)

Ahora, es simplemente una cuestión de trazar las capas en el orden correcto.

# generate plot ggplot(sample.data) + # first we plot the density... stat_density_2d(aes(x = long, y = lat, fill = ..level..), geom="polygon", alpha = 0.5) + # ... then we plot the points geom_point(aes(x = long, y = lat)) + # gradient options scale_fill_gradient(low = "green", high = "red") + scale_alpha(range = c(0.00, 0.25), guide = FALSE) + # and now put the shapes of the gulf states on top geom_polygon(data = gulf_simpl_fort, aes(x = long, y = lat, group = group), color = "black", fill = "white", inherit.aes = F) + # now, limit the displayed map only to the gulf coord_equal(xlim = c(min(PG_fort$long), max(PG_fort$long)), ylim = c(min(PG_fort$lat), max(PG_fort$lat))) + theme_bw()

Intento trazar la distribución ecológica de algunas especies de organismos que estoy estudiando en el Golfo Pérsico / Árabe. Aquí hay una muestra de un código que he intentado:

Capa de Backround

library(ggplot2) library(ggmap) nc <- get_map("Persian Gulf", zoom = 6, maptype = ''terrain'', language = "English") ncmap <- ggmap(nc, extent = "device")

Otras capas

ncmap+ stat_density2d(data=sample.data3, aes(x=long, y=lat, fill=..level.., alpha=..level..),geom="polygon")+ geom_point(data=sample.data3, aes(x=long, y=lat))+ geom_point(aes(x =50.626444, y = 26.044472), color="red", size = 4)+ scale_fill_gradient(low = "green", high = "red") + scale_alpha(range = c(0.00, 0.25), guide = FALSE)

pero, me gustaría utilizar el stat_density2d para mostrar las distribuciones de cientos de especies (que se registran en columnas, por ejemplo, SP1 .... SPn) sobre el cuerpo de agua en lugar de solo mostrar la latitud y la longitud.

Además, ¿es posible restringir mi mapa de calor solo al cuerpo de agua? Agradeceré cualquier ayuda y recomendaciones que pueda obtener sobre esto, por favor