R语言报错:找不到numeric类型的size继承方法及fill美学忽略问题
问题分析与解决
错误1:size函数调用报错
原代码里的size(0.01, bins = 16, geom = "polygon")写法完全错误:
size是ggplot的美学参数,不能单独作为函数调用bins、geom是stat_density_2d的专属参数,必须整合到该函数内部定义
错误2:忽略fill美学提示
- 原代码使用了不存在的
scale_filled_gradient函数,正确名称是scale_fill_gradient stat_density_2d默认绘制线条(仅支持color美学),必须指定geom = "polygon"才能识别fill填充美学
修正后的完整代码
library(tidyverse) library(sf) library(terra) library(ggspatial) library(ggmap) library(basemaps) library(dplyr) library(ggplot2) # 提前定义myLocation,示例:myLocation <- c(116, 39) 或 myLocation <- "Shanghai" myMap <- get_map( location = myLocation, zoom = 4, source = "google", maptype = "satellite" ) # 读取数据时必须赋值给TestData,否则后续代码会报错 TestData <- read.csv("TestData.csv", header = TRUE, sep = ";") newsa <- TestData[, 2:4] ggmap(myMap, extent = "device") + stat_density_2d( data = newsa, aes(x = DLongitude, y = DLatitude, fill = ..level.., alpha = ..level..), geom = "polygon", # 指定绘制多边形,启用fill美学 bins = 16, # 等高线数量参数归属stat函数 size = 0.01 # 多边形边框大小参数归属stat函数 ) + scale_fill_gradient(low = "white", high = "red") + # 正确的填充渐变函数 scale_alpha(range = c(0, 0.3), guide = FALSE)
额外注意事项
- 原代码中
read.csv未赋值给TestData,会导致View(TestData)和newsa生成失败,修正时已补上赋值步骤 myLocation必须提前定义,可传入经纬度向量或城市名称
内容的提问来源于stack exchange,提问作者Rohan Sagar
相关产品推荐
相关产品推荐

