Персонализация масштаба карты GGplot

#r #ggplot2

#r #ggplot2

Вопрос:

Я пытаюсь создать график, состоящий из двух основных частей: «фон» — это форма штата США, а сверху я добавляю точки измерения (используя координаты широты и долготы), которые я хочу масштабировать по цвету в соответствии со значением измерения (данные поступают из фрейма данных). Мне сложно изменить цвет точек и персонализировать панель условных обозначений, я бы хотел, чтобы на панели также отображались максимальное и минимальное значения и использовалась цветовая шкала, которая более визуально привлекательна.

     m = map_data('state', region = state)

finalplot <- ggplot()   
  geom_polygon( data=m, aes(x=long, y=lat), colour="black", fill="white" )  
  geom_point(data=filteredtable,aes(x=LongitudeMeasure,y=LatitudeMeasure, colour = Result))  
  ggtitle(paste0("Measurement points of ", contaminant, " in ", state))  
  theme_void() 
  

при добавлении чего-то вроде scale_color_grey(start = 0.8, end = 0.2) это выдает мне следующую ошибку: Непрерывное значение, предоставленное в дискретном масштабе

Если у вас есть какие-либо другие идеи относительно наилучшего подхода к созданию такого типа графика, я был бы признателен.

Ответ №1:

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

 set.seed(69)
filteredtable <- data.frame(LongitudeMeasure = runif(100, -81.5, -80.5), 
                             LatitudeMeasure = runif(100, 26, 28),
                             Result = runif(100))
state       <- "Florida"
contaminant <- "Dilithium"
  

Теперь давайте попробуем ваш код построения:

 m = map_data('state', region = state)

finalplot <- ggplot()   
  geom_polygon( data=m, aes(x=long, y=lat), colour="black", fill="white" )  
  geom_point(data=filteredtable,aes(x=LongitudeMeasure,y=LatitudeMeasure, colour = Result))  
  ggtitle(paste0("Measurement points of ", contaminant, " in ", state))  
  theme_void()
  

Итак, наш график выглядит так:

 finalplot
  

введите описание изображения здесь

Но если мы попытаемся добавить оттенки серого, которые вы хотели, мы получим ту же ошибку:

 finalplot   scale_color_grey(start = 0.8, end = 0.2)
#> Error: Continuous value supplied to discrete scale
  

Причина этого в том, что scale_color_grey создается дискретная серая цветовая шкала, но вам нужна непрерывная цветовая шкала, поскольку у вас есть непрерывная переменная для Result . Вы, наверное, хотели scale_color_gradient или scale_color_gradientn . Давайте попробуем scale_color_gradient использовать палитру оттенков серого и установим разрывы с шагом 0,1, чтобы получить нужные метки на панели:

 finalplot   scale_color_gradient(low = "gray20", high = "gray80", breaks = seq(0, 1, 0.1))
  

введите описание изображения здесь

Или, если мы хотим чего-то более красочного:

 finalplot  
  scale_color_gradientn(colours = c("red", "gold", "forestgreen"), breaks = seq(0, 1, 0.1))
  

введите описание изображения здесь