You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:22:16