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)