#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))