Изменение цвета geom_point в зависимости от данных (R) - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь изменить цвета точек на графике в зависимости от третьего столбца в моих данных. Я новичок в R, но подозреваю, что мне нужно перебрать фрейм данных и создать новый фрейм данных из этого?

Пример файла данных:

lat,lon,env 
100,30,water
102,32,soil

Я бы хотелчтобы изменить цвет на что-то вроде:

if (env = "water") { color = "blue" }

else if (env = "soil") { color = "black" }

Полный код:

library(maptools)
library(maps)
library(ggmap)

importedData <- read.csv("TestData.csv")

lat = importedData$lat
lon = importedData$lon
env = importedData$env
df <- as.data.frame(cbind(lat,lon))

#color = ?????

mp <- NULL
mapWorld <- borders("world", colour="gray50", fill="gray50") 
mp <- ggplot() +   mapWorld

mp <- mp+ geom_point(aes(x=lon, y=lat) ,color=color, size=3) 
mp

1 Ответ

1 голос
/ 24 октября 2019

Вы хотите, чтобы все ваши переменные были в одном фрейме данных. Затем поместите color внутрь aes и определите его как столбец во фрейме данных. Без использования картографических дополнений вы можете использовать;

library(ggplot2)

lat <- data.frame(lat = 1:10)

lon <- data.frame(lon = 11:20)

env <- data.frame(env = rep(c("soil", "water"), 5),
              stringsAsFactors = F)

test_data <- cbind(lat, lon, env)                  

ggplot(data = test_data) +
  geom_point(aes(x = lat, y = lon, color = env)) + # color inside the aes
  scale_color_manual(values = c("black", "blue")) # set the colors here
...