R 在经度和纬度之间填充渐变
我有一个带有纬度、经度和辐射的csv文件。这些数据看起来像一个网格,整个州大约有100个点。我知道有很多R映射选项,但似乎最简单的方法是利用我所拥有的并尝试从一点到另一点进行渐变,所以它看起来像一个热图。我看到的所有热图选项都与密度有关,当我将它们与这些数据一起使用时,它们看起来并不准确。是否有一个函数可以用来平滑点之间的颜色 以下是一个数字范围小得多的可复制示例:R 在经度和纬度之间填充渐变,r,heatmap,R,Heatmap,我有一个带有纬度、经度和辐射的csv文件。这些数据看起来像一个网格,整个州大约有100个点。我知道有很多R映射选项,但似乎最简单的方法是利用我所拥有的并尝试从一点到另一点进行渐变,所以它看起来像一个热图。我看到的所有热图选项都与密度有关,当我将它们与这些数据一起使用时,它们看起来并不准确。是否有一个函数可以用来平滑点之间的颜色 以下是一个数字范围小得多的可复制示例: lat lon value 40.5 -91.5 4513619 41.0 -95.5 4490658 4
lat lon value
40.5 -91.5 4513619
41.0 -95.5 4490658
41.5 -96.0 4453810
41.5 -94.5 4475373
42.0 -95.5 4432107
42.0 -94.5 4416015
ggplot(df, aes(x = lon, y = lat, color = value)) +
geom_point(size=8) +
coord_equal() +
xlab('Longitude') +
ylab('Latitude')
我们可以使用
ggplot2
包中的geom_tile
创建一个heatmep
library(ggplot2)
ggplot(df, aes(x = lon, y = lat, fill = value)) +
geom_tile(color = "black") +
scale_fill_viridis_c() +
coord_equal() +
xlab('Longitude') +
ylab('Latitude') +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank())
因为您只提供了六个数据点,所以绘图看起来很奇怪。下面我完成并扩展了示例数据集,然后使用相同的代码绘制数据
library(dplyr)
library(tidyr)
set.seed(123)
df2 <- df %>%
complete(lat, lon = seq(-96, -91.5, by = 0.5)) %>%
mutate(value = ifelse(is.na(value), sample(df$value, n(), replace = TRUE), value))
ggplot(df2, aes(x = lon, y = lat, fill = value)) +
geom_tile(color = "black") +
scale_fill_viridis_c() +
coord_equal() +
xlab('Longitude') +
ylab('Latitude') +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank())
数据
df <- read.table(text = "lat lon value
40.5 -91.5 4513619
41.0 -95.5 4490658
41.5 -96.0 4453810
41.5 -94.5 4475373
42.0 -95.5 4432107
42.0 -94.5 4416015",
header = TRUE)
df您是否尝试过在geom_point
中使用alpha
参数进行试验,但它仍然看起来像点相互重叠。您是否有要绘制的绘图示例?
df <- read.table(text = "lat lon value
40.5 -91.5 4513619
41.0 -95.5 4490658
41.5 -96.0 4453810
41.5 -94.5 4475373
42.0 -95.5 4432107
42.0 -94.5 4416015",
header = TRUE)