根据数据更改 geom_point 颜色 (R)

Changing geom_point colors depending on data (R)

我正在尝试根据数据中的第三列更改绘制点的颜色。我是 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

您希望所有变量都在一个数据框中。然后将 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