scatterpie icon indicating copy to clipboard operation
scatterpie copied to clipboard

Error: Discrete value supplied to continuous scale

Open IssamHu opened this issue 3 years ago • 2 comments

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 avatar Mar 10 '21 08:03 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...

besibo avatar Mar 11 '21 10:03 besibo

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)

r2evans avatar Jan 03 '24 19:01 r2evans