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