我正在地图上绘制点数据,并想缩放点大小并填充到另一列。但是,ggplot为大小和填充生成两个单独的图例,我只想要一个。我已经查看了针对同一问题的几种答案,例如,这个答案,但是无法理解我在做什么错。我的理解是,如果两种美学都映射到同一数据,那么应该只有一个图例,对吗?
这是一些代码来说明问题。任何帮助深表感谢!
lat <- rnorm(10,54,12)
long <- rnorm(10,44,12)
val <- rnorm(10,10,3)
df <- as.data.frame(cbind(long,lat,val))
library(ggplot2)
library(scales)
ggplot() +
geom_point(data=df,
aes(x=lat,y=long,size=val,fill=val),
shape=21, alpha=0.6) +
scale_size_continuous(range = c(2, 12), breaks=pretty_breaks(4)) +
scale_fill_distiller(direction = -1, palette="RdYlBu") +
theme_minimal()
Run Code Online (Sandbox Code Playgroud) 作为我上一个问题(@PoGibas 亲切回答)的直接跟进,我正在调整我的情节的外观。我想使用无边界圆形,但在将其集成到我现有的代码中时遇到了问题。这是到目前为止的代码:
set.seed(42)
lat1 <- rnorm(10, 54, 12)
long1 <- rnorm(10, 44, 12)
val1 <- rnorm(10, 10, 3)
lat2 <- rnorm(10, 54, 12)
long2 <- rnorm(10, 44, 12)
val2 <- rnorm(10, 10, 3)
df1 <- as.data.frame(cbind(long1, lat1, val1))
df2 <- as.data.frame(cbind(long2, lat2, val2))
ggplot() +
geom_point(data = df1,
aes(lat1, long1, size = val1, fill = val1),
shape = 21, alpha = 0.6) +
geom_point(data = df2,
aes(lat2, long2, color = "val2"),
shape = 17, size = 3) + …Run Code Online (Sandbox Code Playgroud) 我试图通过沿线的成对点分割一条大线形状。基于以前主要由@mbcaradima在这里、这里、这里和这里提出的问题,我整理了一些适用于单点但不适用于多点的代码。
请参阅下面的可重现示例:
# libraries
library(tidyverse)
library(sf)
library(rgdal)
library(sp)
river <- structure(list(FWK_Code = structure(1L, .Label = "1_F461", class = "factor"),
FWK_Name = structure(1L, .Label = "Glonn von Odelzhausen bis Mündung in die Amper", class = "factor"),
Achse_SWK = structure(NA_integer_, .Label = character(0), class = "factor"),
GEWKZ_11 = structure(1L, .Label = "1648", class = "factor"),
NAM11_SEG = structure(1L, .Label = "Glonn", class = "factor"),
GWO11_SEG = structure(1L, .Label = "1330", class …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该sf包从 GeoPackage 文件中删除矢量图层。“删除”是指永久删除而不是覆盖或更新。我知道该delete_layer选项,但据我所知,这仅用于在将图层替换为同名图层之前删除图层。
不幸的是,我使用非标准编码为 GeoPackage 编写了一个带有名称的层,这有效地使整个 gpkg 文件在 QGIS 中无法读取。因此,我试图找到一种通过 R 删除它的解决方案。