scatterpie
scatterpie copied to clipboard
Error: Discrete value supplied to continuous scale
Dear Sir, I used the following cods: `library("ggplot2")
library("ggmap")
library("scatterpie")
ap <- c(left = 36, bottom = 15, right = 60.4, top = 32)
myMap <- get_map(location=ap, source="stamen", maptype="terrain", zoom = 9 ,crop=FALSE)
ggmap(myMap) +
scale_fill_etopo() +
coord_cartesian(expand = 0) +
labs(y = "Latitude", x = "Longitude") +
theme(legend.position = "none") +
geom_scatterpie(aes(x=Longitude, y=Latitude, group=Country), data=Piedata,
cols=c("Legal", "Illegal"), pie_scale = 1,
sorted_by_radius = FALSE, legend_name = "type",
long_format=FALSE)`
for the data:
Piedata Country Legal Illegal Latitude Longitude 1 A 0.375 0.625 29.74247 48.41323 2 B 0.852 0.148 27.77500 49.14698 3 C 0.345 0.655 26.31520 50.49300 4 D 0.562 0.439 25.56074 51.64831 5 E 0.410 0.590 25.45679 54.72089 6 F 0.750 0.250 21.11154 59.32937
but I get this error: Error: Discrete value supplied to continuous scale
Please can you help me to solve this issue.
Thanks, IssamHu
@IssamHu Please, see my answer here
It's usually not a great idea to post he same question in several places, especially when the error message you're facing has nothing to do with the package maintainer(s) you're asking your question to. You sent your question to the maintainers of ggmap
, scatterpie
and marmap
, when you should have just googled your error message to get basically the same answer I gave you on the marmap
repo issue page...
For the record, it is in fact possible to use fill=
in other layers when adding scatterpie
layers, by using ggnewscale
(or some other package that allows multiple scales for fill=
/color=
). See option 2 in https://stackoverflow.com/a/77754342/3358272.
Bottom line, perhaps (untested) the original code above could work with
ggmap(myMap) +
scale_fill_etopo() +
coord_cartesian(expand = 0) +
labs(y = "Latitude", x = "Longitude") +
theme(legend.position = "none") +
ggnewscale::new_scale_fill() + # <---- ADD
geom_scatterpie(aes(x=Longitude, y=Latitude, group=Country), data=Piedata,
cols=c("Legal", "Illegal"), pie_scale = 1,
sorted_by_radius = FALSE, legend_name = "type",
long_format=FALSE)