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

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

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

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

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

  1. Brazil_bound_sf = 边界
  2. 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!请把recommendeddput() 您的数据发送给您,然后发布结果编辑您的问题。如果它们太多,您可以dput(head(,20)) 您的数据(例如,dput(head(Brazil_bound_sf,20))dput(head(Brazil_cit_longlat,20)))。

标签: r ggplot2


【解决方案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”!非常感谢!
  • 德纳达,蟒蛇
猜你喜欢
  • 2014-11-14
  • 2023-03-06
  • 2015-11-09
  • 2018-06-20
  • 2014-05-27
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多