ggplot2 + geom_point + 与大小成比例的气泡(错误“离散值提供给连续比例”)

Posted

技术标签:

【中文标题】ggplot2 + geom_point + 与大小成比例的气泡(错误“离散值提供给连续比例”)【英文标题】:ggplot2 + geom_point + bubble proportional to size (error "Discrete value supplied to continuous scale") 【发布时间】:2019-03-29 09:41:18 【问题描述】:

我正在尝试表示与城市相对应的点/气泡,这些城市的规模与人口成正比。

尽管多次尝试,我总是得到相同的错误(“离散值提供给连续刻度”),即使我的变量是数字。

使用的示例数据可以在这里找到

https://github.com/Lulliter/r-ggplot-points-question

    Brazil_bound_sf = 边界 Brazil_cit_longlat = 几年内人口 # 的城市列表

情节不起作用

ggplot() + 
  geom_sf (data = Brazil_bound_sf, 
         aes(fill = NULL), alpha = .1,colour = "darkgrey",size = 0.3) +
  geom_point(data = Brazil_cit_longlat, aes( x = lon, y = lat, size = 
           "2016"), fill = "red", color = "grey", alpha = .2) + 
  scale_size_continuous()  +

  coord_sf(crs = st_crs(Brazil_bound_sf), datum = NA) + 
  theme_void() 

# Error: Discrete value supplied to continuous scale

谢谢!

【问题讨论】:

您提供了size = "2016""2016" 不是数值。您是在尝试将 "2016" 逐字映射到大小,还是 2016 是您的某一列的名称? 顺便说一句,如果您希望大小与人口成正比,而不是半径,您可能更喜欢scale_size_area 欢迎来到 SO!请把recommended 到dput() 您的数据发送给您,然后发布结果编辑您的问题。如果它们太多,您可以dput(head(,20)) 您的数据(例如,dput(head(Brazil_bound_sf,20))dput(head(Brazil_cit_longlat,20)))。 【参考方案1】:

这对我有用(我只是将“2016”替换为2016。这样您指的是数据框中的列而不是字符串“2016”:

ggplot() + 
  geom_sf (data = x, 
           aes(fill = NULL), alpha = .1,colour = "darkgrey",size = 0.3) +
  geom_point(data = y, aes( x = lon, y = lat, size = 
                                               `2016`), fill = "red", color = "grey", alpha = .2) + 
  scale_size_continuous()  + 
  sf::plot_sf(crs = st_crs(x), datum = NA)

【讨论】:

对,它也对我有用....都是关于愚蠢的列名“2016”!非常感谢! 德纳达,蟒蛇

以上是关于ggplot2 + geom_point + 与大小成比例的气泡(错误“离散值提供给连续比例”)的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2使用geom_line函数geom_point函数可视化哑铃图并对哑铃图进行排序(reorder dumbbell plot)

ggplot2() 按因子绘制一个变量与自身的关系?

如何使用ggplot2编辑图例的位置

R语言与医学统计图形-10ggplot2图形映射

ggplot2中的颜色和填充参数有什么区别?

R可视化删除ggplot2图中的网格线(Gridlines)