Не могу установить и scale_size_continuous (), и scale_size (), ggplot - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь отредактировать легенду для эстетики размера и установить размер шкалы для этой эстетики, но, похоже, не могу сделать то и другое.

Вот шаги:

#create the map  
library(ggplot2)
world <- broders("world")

#generate a dataframe of geolocated data with attributes
points <- data.frame(lat = seq(0, 50, 10), 
                         lon = seq(0, 50, 10),
                         type = c("y", "n", "y", "n", "y", "n"), 
                         impact.x.r = seq(0, 50, 10))
points
lat lon type impact.x.r
1   0   0    y          0
2  10  10    n         10
3  20  20    y         20
4  30  30    n         30
5  40  40    y         40
6  50  50    n         50

Затем я отображаю точки в ggplot - все работает:

ggplot() + 
  world + 
  geom_point(data = points, aes(x = lon, y = lat, col = type, size = impact.x.r)) + 
  scale_color_discrete(name = "types of birds", breaks = c("n","y"), labels = c("no", "yes")) +
  scale_size_continuous(name = "impact")

working ggplot code

Однако, как только я пытаюсь установить размер шкалы, используя: + scale_size(), я получаю ошибку.Я также теряю форматирование, которое я сделал для эстетической легенды размера:

ggplot() + 
  world + 
  geom_point(data = points, aes(x = lon, y = lat, col = type, size = impact.x.r)) + 
  scale_color_discrete(name = "types of birds", breaks = c("n","y"), labels = c("no", "yes")) +
  scale_size_continuous(name = "impact") + 
  scale_size(range = c(0,15))

Scale for 'size' is already present. Adding another scale for 'size', which
will replace the existing scale.

ggplot code broken by adding size_range()

Если я переключаю порядок scale_size_continuous() и scale_size() звонки, я все еще получаю ошибку.В этом случае я сохраняю форматирование, но теряю масштабирование:

ggplot() + 
  world + 
  geom_point(data = points, aes(x = lon, y = lat, col = type, size = impact.x.r)) + 
  scale_color_discrete(name = "types of birds", breaks = c("n","y"), labels = c("no", "yes")) +
  scale_size(range = c(0,15)) +
  scale_size_continuous(name = "impact")
 Scale for 'size' is already present. Adding another scale for 'size', which
will replace the existing scale.    

Another piece of broken ggplot code

Так что используется последний вызов scale_size ...

Но как мне изменить легенду для эстетики размера и задать для scale_size то, что соответствует моей карте?

...