में लेबल कैसे बदलें मेरे पास बड़ी संख्या में डेटा श्रृंखला है जिसे मैं छोटे गुणकों का उपयोग करके साजिश करना चाहता हूं। Ggplot2 और facet_wrap
का संयोजन जो मैं चाहता हूं, आमतौर पर 6 x 6 पहलुओं का एक अच्छा छोटा ब्लॉक होता है। यहाँ एक सरल संस्करण है:facet_grid में कॉलम कैसे निर्दिष्ट करें या facet_wrap
समस्या यह है कि मैं पहलू स्ट्रिप्स में लेबल पर पर्याप्त नियंत्रण नहीं है। डेटा फ्रेम में कॉलम के नाम कम हैं और मैं उन्हें इस तरह से रखना चाहता हूं, लेकिन मैं चाहता हूं कि पहलुओं में लेबल अधिक वर्णनात्मक हों। मैं facet_grid
का उपयोग कर सकता हूं ताकि मैं labeller
फ़ंक्शन का लाभ उठा सकूं लेकिन फिर कॉलम की संख्या निर्दिष्ट करने और पहलुओं की एक लंबी पंक्ति निर्दिष्ट करने का कोई सीधा तरीका नहीं है, यह इस विशेष कार्य के लिए काम नहीं करता है। क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है?
प्र जब कॉलम के नाम बदल के बिना facet_wrap का उपयोग कर रहा पहलू लेबल बदल सकते हैं? वैकल्पिक रूप से, facet_grid का उपयोग करते समय मैं कॉलम और पंक्तियों की संख्या कैसे निर्दिष्ट कर सकता हूं?
एक सरलीकृत उदाहरण के लिए कोड निम्नानुसार है। वास्तविक जीवन में मैं कई समूहों से निपट रहा हूं जिनमें दर्जनों डेटा श्रृंखला शामिल हैं, जिनमें से प्रत्येक अक्सर बदलती है, इसलिए मैन्युअल रूप से मूल्यों को मैन्युअल रूप से निर्दिष्ट करने के बजाय किसी भी समाधान को स्वचालित करना होगा।
require(ggplot2)
require(reshape)
# Random data with short column names
set.seed(123)
myrows <- 30
mydf <- data.frame(date = seq(as.Date('2012-01-01'), by = "day", length.out = myrows),
aa = runif(myrows, min=1, max=2),
bb = runif(myrows, min=1, max=2),
cc = runif(myrows, min=1, max=2),
dd = runif(myrows, min=1, max=2),
ee = runif(myrows, min=1, max=2),
ff = runif(myrows, min=1, max=2))
# Plot using facet wrap - we want to specify the columns
# and the rows and this works just fine, we have a little block
# of 2 columns and 3 rows
mydf <- melt(mydf, id = c('date'))
p1 <- ggplot(mydf, aes(y = value, x = date, group = variable)) +
geom_line() +
facet_wrap(~ variable, ncol = 2)
print (p1)
# Problem: we want more descriptive labels without changing column names.
# We can change the labels, but doing so requires us to
# switch from facet_wrap to facet_grid
# However, in facet_grid we can't specify the columns and rows...
mf_labeller <- function(var, value){ # lifted bodily from the R Cookbook
value <- as.character(value)
if (var=="variable") {
value[value=="aa"] <- "A long label"
value[value=="bb"] <- "B Partners"
value[value=="cc"] <- "CC Inc."
value[value=="dd"] <- "DD Company"
value[value=="ee"] <- "Eeeeeek!"
value[value=="ff"] <- "Final"
}
return(value)
}
p2 <- ggplot(mydf, aes(y = value, x = date, group = variable)) +
geom_line() +
facet_grid(~ variable, labeller = mf_labeller)
print (p2)
यह एक [खुली समस्या] है (https://github.com/hadley/ggplot2/issues/25), लेकिन आपके विशेष मामले में (सरल नामकरण, कोई bquote या plotmath) आप पहले से ही चर का नाम बदल सकते हैं। – baptiste
@baptiste मुझे इस बात से अवगत नहीं था कि यह एक खुला मुद्दा था (और अब दो साल से ऐसा ही रहा है, इसलिए जल्द ही किसी भी समय बदलने की संभावना नहीं है)। संदिग्ध हैडली को परियोजना पर रखने के लिए और अधिक ग्रेड छात्रों की जरूरत है! – SlowLearner
या आर-समझदार स्वयंसेवक – baptiste