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

时间:2019-10-24 03:34:06

标签: r ggplot2 ggmap

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

答案 0 :(得分:1)

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