पैकेज एसएफ डिफ़ॉल्ट रूप से रंग असाइन करता है, जो बहुत अच्छा है, लेकिन उन रंगों को कैसे अनुकूलित किया जाए, मेरे मामले में, क्या मेरे पास ढेर = काला, ट्रैकर = लाल, पैनल = ब्लू हो सकता है

library(sf)
dataset= data.frame(stringsAsFactors=FALSE,
          id = c("A-27-2", "A-27-2", "A-27-2"),
           x = c(143.4907147, 143.4907125, 143.4907103),
           y = c(-34.755718, -34.755645, -34.7555693),
           status = c("tracker", "Pile", "panel")
)
map <- st_as_sf(dataset, coords = c("x", "y"), crs = 4326)
plot(map["status"],pch=20,cex=0.4,key.pos=1)

संपादित करें: दूसरा प्रयास, मैंने रंगों के साथ एक कॉलम जोड़ा, क्या उस कॉलम को संदर्भित करना संभव है, मेरा वास्तविक डेटाफ्रेम 70K पंक्तियाँ है

library(sf)
dataset=data.frame(stringsAsFactors=FALSE,
          id = c("A-27-2", "A-27-2", "A-27-2", "A-27-2"),
           x = c(143.4907147, 143.4907125, 143.4907103, 143.4907081),
           y = c(-34.755718, -34.755645, -34.7555693, -34.7554964),
      status = c("tracker", "panel", "panel", "pile"),
       color = c("blue", "yellow", "yellow", "black")
)
map <- st_as_sf(dataset, coords = c("x", "y"), crs = 4326)
plot(map["status"],pch=20,cex=0.4,key.pos=1,col=map$color)

अब सब अच्छा

r sf
1
Mim 24 फरवरी 2019, 10:19

1 उत्तर

सबसे बढ़िया उत्तर

आप उसके लिए ggplot का उपयोग करना चाहेंगे, क्योंकि यह अधिक लचीला है।

library(ggplot2)
ggplot() + geom_sf(data = map, aes(color = status)) + 
  scale_color_manual(values = c(panel = "blue", pile = "black", tracker = "red"))

यदि आपको बेस प्लॉट से चिपके रहना है, तो आपको नामित वेक्टर का उपयोग करके रंग प्रदान करना होगा:

library(sf)
dataset=data.frame(stringsAsFactors=FALSE,
                   id = c("A-27-2", "A-27-2", "A-27-2", "A-27-2"),
                   x = c(143.4907147, 143.4907125, 143.4907103, 143.4907081),
                   y = c(-34.755718, -34.755645, -34.7555693, -34.7554964),
                   status = c("tracker", "panel", "panel", "pile")
)

dataset$color <- NA
dataset$color[dataset$status == "pile"] <- "black"
dataset$color[dataset$status == "tracker"] <- "red"
dataset$color[dataset$status == "panel"] <- "blue"

map <- st_as_sf(dataset, coords = c("x", "y"), crs = 4326)
plot(map["status"],pch=20,cex=2,key.pos=1,col=map$color)
legend("bottomright", legend = c("Pile", "panel", "tracker"), 
       fill = c("black", "blue", "red"))
2
loki 24 फरवरी 2019, 11:25