YuLab-SMU / scatterpie

:art: scatter pie plot
https://cran.r-project.org/package=scatterpie
60 stars 15 forks source link

Error: Discrete value supplied to continuous scale #31

Open IssamHu opened 3 years ago

IssamHu commented 3 years ago

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

besibo commented 3 years ago

@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...

r2evans commented 10 months ago

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)