फेसबेल लेबल कैसे बदलें?


230

मैंने निम्नलिखित ggplotकमांड का उपयोग किया है :

ggplot(survey, aes(x = age)) + stat_bin(aes(n = nrow(h3), y = ..count.. / n), binwidth = 10)
  + scale_y_continuous(formatter = "percent", breaks = c(0, 0.1, 0.2))
  + facet_grid(hospital ~ .)
  + theme(panel.background = theme_blank())

उत्पादन करना

वैकल्पिक शब्द

मैं बदलना चाहते हैं पहलू कम कुछ करने के लिए लेबल, तथापि, (जैसे Hosp 1, Hosp 2...), क्योंकि वे बहुत लंबा अब कर रहे हैं और देखो तंग (ग्राफ की ऊंचाई बढ़ रही है एक विकल्प नहीं है, उस में बहुत अधिक स्थान ले जाएगा दस्तावेज़)। मैंने facet_grid सहायता पृष्ठ को देखा, लेकिन यह पता नहीं लगा सका कि कैसे।

जवाबों:


123

कुछ के साथ अंतर्निहित कारक स्तर के नाम बदलें:

# Using the Iris data
> i <- iris
> levels(i$Species)
[1] "setosa"     "versicolor" "virginica" 
> levels(i$Species) <- c("S", "Ve", "Vi")
> ggplot(i, aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ .)

12
@wishihadabettername: अंतर्निहित डेटा को बदलने से बचने के लिए, आप उपयोग कर सकते हैं: ggplot(transform(iris, Species = c("S", "Ve", "Vi")[as.numeric(Species)]), aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ .)
अरनौद

1
संबंधित ... यदि आप चाहते हैं कि पैनल लेबल एक bquote () अभिव्यक्ति (जैसे, levels(x$measurements) <- c(bquote(Area ~~ (cm^2)), bquote(Length ~~ (cm)))) हो तो यह गणितीय अभिव्यक्ति में प्रकट नहीं होगा। फेस लेबल के रूप में भाव कैसे दिखाएंगे?
ब्रायन डी

पहलू लेबल में अभिव्यक्तियों को शामिल labellerकरने के लिए , विकल्प का उपयोग करें facet_grid: stackoverflow.com/questions/37089052/…
ब्रायन डी

285

यहाँ एक समाधान है जो आपके डेटा को संपादित करने से बचता है:

मान लें कि आपका प्लॉट groupआपके डेटाफ़्रेम के भाग से मुखरित है, जिसमें स्तर हैं control, test1, test2, फिर उन मानों द्वारा नामित सूची बनाएँ:

hospital_names <- list(
  'Hospital#1'="Some Hospital",
  'Hospital#2'="Another Hospital",
  'Hospital#3'="Hospital Number 3",
  'Hospital#4'="The Other Hospital"
)

फिर एक 'लेबेलर' फ़ंक्शन बनाएं, और इसे अपने facet_grid कॉल में धकेलें:

hospital_labeller <- function(variable,value){
  return(hospital_names[value])
}

ggplot(survey,aes(x=age)) + stat_bin(aes(n=nrow(h3),y=..count../n), binwidth=10)
 + facet_grid(hospital ~ ., labeller=hospital_labeller)
 ...

यह अस्पताल के नामों को सूचीबद्ध करने के लिए डेटा फ्रेम के स्तरों का उपयोग करता है। सूची के मान (सही नाम) को वापस करता है।


कृपया ध्यान दें कि यह केवल तभी काम करता है जब आपके पास केवल एक ही परिवर्तनशील चर हो। यदि आपके पास दो पहलू हैं, तो आपके लेबेलर फ़ंक्शन को प्रत्येक पहलू के लिए एक अलग नाम वेक्टर वापस करना होगा। आप इसे कुछ इस तरह से कर सकते हैं:

plot_labeller <- function(variable,value){
  if (variable=='facet1') {
    return(facet1_names[value])
  } else {
    return(facet2_names[value])
  }
}

कहाँ facet1_namesऔर facet2_namesपूर्व-निर्धारित नामों की सूचियाँ हैं, जिन्हें अनुक्रमणिका के अनुक्रमित नामों ('Hostpital # 1', इत्यादि) द्वारा अनुक्रमित किया गया है।


संपादित करें: उपरोक्त विधि विफल हो जाती है यदि आप एक वैरिएबल / मान संयोजन को पास करते हैं जो लेबेलर को नहीं पता है। आप इस तरह अज्ञात चर के लिए एक असफल-सुरक्षित जोड़ सकते हैं:

plot_labeller <- function(variable,value){
  if (variable=='facet1') {
    return(facet1_names[value])
  } else if (variable=='facet2') {
    return(facet2_names[value])
  } else {
    return(as.character(value))
  }
}

उत्तर कैसे पट्टी से बदलने के लिए अनुकूलित। पहलू लेबल ggplot में पहलू और मार्जिन = TRUE के साथ


संपादित करें: चेतावनी : यदि आप इस पद्धति का उपयोग चरित्र स्तंभ द्वारा करने के लिए कर रहे हैं , तो आपको गलत लेबल मिल सकते हैं। इस बग रिपोर्ट देखें । ggplot2 के हाल के संस्करणों में तय किया गया।


9
अच्छा है, लेकिन facet_wrap के साथ काम नहीं करेगा, जबकि @Vince समाधान facet_wrap के साथ भी काम करेगा।
अरनौद एक

@ArnaudAmzallag: सही है, हालांकि अगर किसी को कुछ समय दान करने का मन करता है, तो यह भविष्य में हो सकता है
n

अज्ञात मुखर चर के लिए एक विफल-सुरक्षित जोड़ा गया।
n

16
सूचना: यह ggplot2 v.2 में काम नहीं करता है - लैबलर फ़ंक्शन बदल गया है। @mbirons जवाब काम करता है stackoverflow.com/a/34811062/162832
एंड्रियास

दिलचस्प है, लेकिन यह हमेशा काम नहीं करता है, जबकि कारकों को हमेशा संपादित करता है।
PatrickT

214

यहाँ एक और समाधान है जो @ naught101 द्वारा दिए गए एक की भावना में है, लेकिन सरल है और ggplot2 के नवीनतम संस्करण पर चेतावनी भी नहीं देता है।

मूल रूप से, आप पहले एक नामित वर्ण वेक्टर बनाते हैं

hospital_names <- c(
                    `Hospital#1` = "Some Hospital",
                    `Hospital#2` = "Another Hospital",
                    `Hospital#3` = "Hospital Number 3",
                    `Hospital#4` = "The Other Hospital"
                    )

और फिर आप इसे एक प्रयोगशाला के रूप में उपयोग करते हैं, बस @ n-0101 द्वारा दिए गए कोड की अंतिम पंक्ति को संशोधित करके

... + facet_grid(hospital ~ ., labeller = as_labeller(hospital_names))

उम्मीद है की यह मदद करेगा।


Ggplot2 का कौन सा स्थान है as_labeller? मुझे CRAN GitHub रिपॉजिटरी के लिए कुछ स्रोत कोड मिल गए हैं , लेकिन नवीनतम संस्करण (CRAN पर!) में अपग्रेड करने के बाद मुझे फ़ंक्शन नहीं लगता है।
n1k31t4

वह अजीब है। मैंने CRAN के माध्यम से भी अपडेट किया। यहाँ दस्तावेज़ docs.ggplot2.org/dev/as_labeller.html
mbiron

4
यह अच्छा है। जब आपके फेस ग्रिड में दो चर होते हैं तो क्या होता है? जैसे hospital ~ genderया कुछ और? क्या दोनों कुल्हाड़ियों पर लेबेलर्स का उपयोग करने का एक तरीका है? मैं डॉक्स में कुछ भी स्पष्ट नहीं देख सकता।
n

3
ध्यान दें कि यदि आपने शून्य के उत्तर से शुरू किया है, तो यह केवल एक सी () नहीं एक सूची () के साथ काम करता है ।
thomas88wp

1
इसका एक बड़ा हिस्सा यह है कि यह पहलू ग्रिड के दोनों अक्षों के साथ काम करता है!
कैलम यू

30

यहाँ मैंने facet_grid(yfacet~xfacet)ggplot2, संस्करण 2.2.1 का उपयोग करके यह कैसे किया :

facet_grid(
    yfacet~xfacet,
    labeller = labeller(
        yfacet = c(`0` = "an y label", `1` = "another y label"),
        xfacet = c(`10` = "an x label", `20` = "another x label")
    )
)

ध्यान दें कि इसमें कॉल नहीं है as_labeller()- ऐसा कुछ जो मैंने थोड़ी देर के लिए संघर्ष किया।

यह दृष्टिकोण लेबर पेज से लेकर लेबेलर फंक्शन तक के अंतिम उदाहरण से प्रेरित है ।


यह काम!!! मैं अन्य समाधानों को लागू करने में सक्षम नहीं था क्योंकि कुछ सुझाए गए समाधानों को वर्तमान ggplot2 संस्करणों पर पदावनत किया गया था।
Yanes

आप इन नामित वैक्टर का निर्माण setNames() stackoverflow.com/a/22428439/3362993
jsta

23

आप दो पहलुओं है hospitalऔर roomलेकिन सिर्फ एक नाम बदलना चाहते हैं, तो आप उपयोग कर सकते हैं:

facet_grid( hospital ~ room, labeller = labeller(hospital = as_labeller(hospital_names)))

वेक्टर-आधारित दृष्टिकोण का उपयोग करके दो पहलुओं का नाम बदलने के लिए (जैसा कि n-0101 के उत्तर में), आप कर सकते हैं:

facet_grid( hospital ~ room, labeller = labeller(hospital = as_labeller(hospital_names),
                                                 room = as_labeller(room_names)))

16

अंतर्निहित डेटा को संशोधित किए बिना बदलने का आसान तरीका है:

1) डिफ़ॉल्ट मानों में से प्रत्येक के लिए पीछे टिक मार्क जोड़करas_labeller फ़ंक्शन का उपयोग करके एक ऑब्जेक्ट बनाएं :

hum.names <- as_labeller(c(`50` = "RH% 50", `60` = "RH% 60",`70` = "RH% 70", `80` = "RH% 80",`90` = "RH% 90", `100` = "RH% 100")) #Necesarry to put RH% into the facet labels

2) हम GGplot में जोड़ते हैं:

ggplot(dataframe, aes(x=Temperature.C,y=fit))+geom_line()+ facet_wrap(~Humidity.RH., nrow=2,labeller=hum.names)

1
मुझे लगता है कि यह सबसे सुंदर तरीका है - यह प्रभावी है और ggplot2 संस्करण 3.0.0.9000 के साथ काम करता है
Landak

9

ध्यान दें कि यह समाधान अच्छी तरह से काम नहीं करेगा अगर ggplot वास्तव में आपके वैरिएबल की तुलना में कम कारक दिखाएगा (जो कि हो सकता है यदि आप उदाहरण के लिए सब्मिट कर रहे थे):

 library(ggplot2)
 labeli <- function(variable, value){
  names_li <- list("versicolor"="versi", "virginica"="virg")
  return(names_li[value])
 }

 dat <- subset(iris,Species!="setosa")
 ggplot(dat, aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ ., labeller=labeli)

एक सरल समाधान (इसके अलावा सभी अप्रयुक्त कारकों को name_li में जोड़ा जा सकता है, जो थकाऊ हो सकता है) बूंदों के साथ अप्रयुक्त कारकों को गिराना है (), या तो मूल डेटासेट में, या लैबबेलर फ़ंक्शन में, देखें:

labeli2 <- function(variable, value){
  value <- droplevels(value)
  names_li <- list("versicolor"="versi", "virginica"="virg")
  return(names_li[value])
}

dat <- subset(iris,Species!="setosa")
ggplot(dat, aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ ., labeller=labeli2)

9

यह समाधान, जो @domi के पास है, के पास है, लेकिन पहले 4 अक्षरों और अंतिम संख्या को लाकर नाम को छोटा करने के लिए डिज़ाइन किया गया है।

library(ggplot2)

# simulate some data
xy <- data.frame(hospital = rep(paste("Hospital #", 1:3, sep = ""), each = 30),
                 value = rnorm(90))

shortener <- function(string) {
  abb <- substr(string, start = 1, stop = 4) # fetch only first 4 strings
  num <- gsub("^.*(\\d{1})$", "\\1", string) # using regular expression, fetch last number
  out <- paste(abb, num) # put everything together
  out
}

ggplot(xy, aes(x = value)) +
  theme_bw() +
  geom_histogram() +
  facet_grid(hospital ~ ., labeller = labeller(hospital = shortener))

यहां छवि विवरण दर्ज करें


6

दोनों facet_wrapऔर facet_gridभी से इनपुट स्वीकार करते हैं ifelseएक तर्क के रूप। इसलिए यदि फेसिंग के लिए उपयोग किया जाने वाला चर तार्किक है, तो समाधान बहुत सरल है:

facet_wrap(~ifelse(variable, "Label if true", "Label if false"))

यदि चर में अधिक श्रेणियां हैं, तो ifelseकथन को नेस्टेड किया जाना चाहिए ।

एक साइड इफेक्ट के रूप में, यह ggplotकॉल के भीतर समूहों के निर्माण की सुविधा देता है ।


5

गणितीय प्रतीकों, सुपरस्क्रिप्ट, सबस्क्रिप्ट, कोष्ठक / ब्रैकेट, .etc के @ @ के समान एक और समाधान जोड़ना।

library(tidyverse)
theme_set(theme_bw(base_size = 18))

### create separate name vectors
# run `demo(plotmath)` for more examples of mathematical annotation in R
am_names <- c(
  `0` = "delta^{15}*N-NO[3]^-{}",
  `1` = "sqrt(x,y)"
)

# use `scriptstyle` to reduce the size of the parentheses &
# `bgroup` to make adding `)` possible 
cyl_names <- c(
  `4` = 'scriptstyle(bgroup("", a, ")"))~T~-~5*"%"',
  `6` = 'scriptstyle(bgroup("", b, ")"))~T~+~10~degree*C',
  `8` = 'scriptstyle(bgroup("", c, ")"))~T~+~30*"%"'
)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_jitter() +
  facet_grid(am ~ cyl,
             labeller = labeller(am  = as_labeller(am_names,  label_parsed),
                                 cyl = as_labeller(cyl_names, label_parsed))
             ) +
  geom_text(x = 4, y = 25, size = 4, nudge_y = 1,
            parse = TRUE, check_overlap = TRUE,
            label = as.character(expression(paste("Log"["10"], bgroup("(", frac("x", "y"), ")")))))

### OR create new variables then assign labels directly
# reverse facet orders just for fun
mtcars <- mtcars %>% 
  mutate(am2  = factor(am,  labels = am_names),
         cyl2 = factor(cyl, labels = rev(cyl_names), levels = rev(attr(cyl_names, "names")))
  )

ggplot(mtcars, aes(wt, mpg)) + 
  geom_jitter() +
  facet_grid(am2 ~ cyl2,
             labeller = label_parsed) +
  annotate("text", x = 4, y = 30, size = 5,
           parse = TRUE, 
           label = as.character(expression(paste("speed [", m * s^{-1}, "]"))))

2019-03-30 को रेप्रेक्स पैकेज (v0.2.1.9000) द्वारा बनाया गया



3

मुझे लगता है कि अन्य सभी समाधान वास्तव में ऐसा करने के लिए सहायक हैं, लेकिन अभी तक एक और तरीका है।

मै मानता हूँ:

  • आपने dplyrपैकेज स्थापित किया है, जिसमें सुविधाजनक mutateकमांड है, और
  • आपका डेटा नाम दिया गया है survey

    सर्वे%>% उत्परिवर्तन (Hosp1 = Hospital1, Hosp2 = Hospital2, ........)

यह कमांड आपको स्तंभों का नाम बदलने में मदद करता है, फिर भी अन्य सभी कॉलम रखे जाते हैं।

फिर वही करो facet_wrap, तुम अब ठीक हो।


क्षमा करें, यह काम नहीं करता है क्योंकि यह कॉलम सामग्री को भी बदलता है
जेन्स

3

variable, valueतर्क के रूप में काम करने वाला लैबलर कार्य मेरे लिए कारगर नहीं होगा। इसके अलावा, यदि आप अभिव्यक्ति का उपयोग करना चाहते हैं, तो आपको lapply का उपयोग करने की आवश्यकता है और बस उपयोग नहीं कर सकते arr[val], क्योंकि फ़ंक्शन का तर्क एक डेटा है।

इस कोड ने किया काम:

libary(latex2exp)
library(ggplot2)
arr <- list('virginica'=TeX("x_1"), "versicolor"=TeX("x_2"), "setosa"=TeX("x_3"))
mylabel <- function(val) { return(lapply(val, function(x) arr[x])) }
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) + geom_line() + facet_wrap(~Species, labeller=mylabel)

3

चूंकि मुझे अभी तक पदों पर टिप्पणी करने की अनुमति नहीं है, इसलिए मैं इसे विंस के उत्तर और सोन 520804 के उत्तर के परिशिष्ट के रूप में अलग से पोस्ट कर रहा हूं । श्रेय उन्हें जाता है।

Son520804:

आइरिस डेटा का उपयोग करना:

मैं मानता हूं:
आपने dplyr पैकेज स्थापित किया है, जिसमें सुविधाजनक म्यूट कमांड है, और आपके डेटासेट का नाम सर्वेक्षण है। survey %>% mutate(Hosp1 = Hospital1, Hosp2 = Hospital2,........) यह कमांड आपको स्तंभों का नाम बदलने में मदद करता है, फिर भी अन्य सभी कॉलम रखे जाते हैं। फिर वही facet_wrap करें, अब आप ठीक हैं।

विंस के आईरिस उदाहरण और son520804 के आंशिक कोड का उपयोग करके, मैंने इसे म्यूट फ़ंक्शन के साथ किया और मूल डेटासेट को छूने के बिना एक आसान समाधान प्राप्त किया। चाल अस्थायी नाम वेक्टर बनाने के लिए है और अस्थायी रूप से चेहरे के नामों को सही करने के लिए पाइप के अंदर म्यूट () का उपयोग करना है:

i <- iris

levels(i$Species)
[1] "setosa"     "versicolor" "virginica"

new_names <- c(
  rep("Bristle-pointed iris", 50), 
  rep("Poison flag iris",50), 
  rep("Virginia iris", 50))

i %>% mutate(Species=new_names) %>% 
ggplot(aes(Petal.Length))+
    stat_bin()+
    facet_grid(Species ~ .)

इस उदाहरण में आप देख सकते हैं कि i_ प्रजाति के स्तर अस्थायी रूप से new_names वेक्टर में समाहित समान नामों में बदल गए हैं। युक्त रेखा

mutate(Species=new_names) %>%

मूल नामकरण प्रकट करने के लिए आसानी से हटाया जा सकता है।

शब्द सावधानी: यह आसानी से नामों में त्रुटियों का परिचय दे सकता है यदि new_name वेक्टर सही ढंग से सेट नहीं है। चर स्ट्रिंग को बदलने के लिए एक अलग फ़ंक्शन का उपयोग करना संभवतः बहुत अधिक साफ होगा। ध्यान रखें कि new_name वेक्टर को आपके मूल डेटासेट के क्रम से मेल खाने के लिए अलग-अलग तरीकों से दोहराया जा सकता है। कृपया डबल - और - ट्रिपल चेक करें कि यह सही ढंग से हासिल किया गया है।


यह उपयोग करने के लिए थोड़ा सा अच्छा हो सकता है: new_names <- c('setosa' = 'Bristle-pointed iris', 'versicolor' = 'Poison flag iris', 'virginica' = 'Virginia iris')और फिर म्यूटेट में आप एक नया कॉलम बना सकते हैं जैसे:mutate(Spec = new_names[Species])
filups21

3

यह मेरे लिए काम कर रहा है।

एक कारक परिभाषित करें:

hospitals.factor<- factor( c("H0","H1","H2") )

और उपयोग ggplot():

facet_grid( hospitals.factor[hospital] ~ . )

2

बस naught101 के जवाब का विस्तार - क्रेडिट उसे जाता है

plot_labeller <- function(variable,value, facetVar1='<name-of-1st-facetting-var>', var1NamesMapping=<pass-list-of-name-mappings-here>, facetVar2='', var2NamesMapping=list() )
{
  #print (variable)
  #print (value)
  if (variable==facetVar1) 
    {
      value <- as.character(value)
      return(var1NamesMapping[value])
    } 
  else if (variable==facetVar2) 
    {
      value <- as.character(value)
      return(var2NamesMapping[value])
    } 
  else 
    {
      return(as.character(value))
    }
}

आपको जो करना है, वह नाम-टू-नाम मानचित्रण के साथ एक सूची बनाना है

clusteringDistance_names <- list(
  '100'="100",
  '200'="200",
  '300'="300",
  '400'="400",
  '600'="500"
)

और plot_labeller()नए डिफ़ॉल्ट तर्कों के साथ फिर से परिभाषित करें:

plot_labeller <- function(variable,value, facetVar1='clusteringDistance', var1NamesMapping=clusteringDistance_names, facetVar2='', var1NamesMapping=list() )

और तब:

ggplot() + 
  facet_grid(clusteringDistance ~ . , labeller=plot_labeller) 

वैकल्पिक रूप से आप अपने द्वारा किए जाने वाले प्रत्येक लेबल परिवर्तन के लिए एक समर्पित फ़ंक्शन बना सकते हैं।


2

मेरे पास अंतर्निहित डेटा को बदले बिना एक ही लक्ष्य प्राप्त करने का एक और तरीका है:

ggplot(transform(survey, survey = factor(survey,
        labels = c("Hosp 1", "Hosp 2", "Hosp 3", "Hosp 4"))), aes(x = age)) +
  stat_bin(aes(n = nrow(h3),y=..count../n), binwidth = 10) +
  scale_y_continuous(formatter = "percent", breaks = c(0, 0.1, 0.2)) +
  facet_grid(hospital ~ .) +
  opts(panel.background = theme_blank())

मैंने ऊपर जो किया वह मूल डेटा फ्रेम में कारक के लेबल को बदल रहा है, और आपके मूल कोड की तुलना में यह एकमात्र अंतर है।


1

क्या आपने अपने Hospitalवेक्टर के विशिष्ट स्तरों को बदलने की कोशिश की है ?

levels(survey$hospital)[levels(survey$hospital) == "Hospital #1"] <- "Hosp 1"
levels(survey$hospital)[levels(survey$hospital) == "Hospital #2"] <- "Hosp 2"
levels(survey$hospital)[levels(survey$hospital) == "Hospital #3"] <- "Hosp 3"

1

मुझे लगता है कि मुझे इस पर अपना जवाब जोड़ना चाहिए क्योंकि इस काम को करने में मुझे काफी समय लगा:

यह उत्तर आपके लिए है अगर:

  • आप अपना मूल डेटा संपादित नहीं करना चाहते हैं
  • यदि आपको अपने लेबल में अभिव्यक्ति ( bquote) की आवश्यकता है और
  • यदि आप एक अलग लेबलिंग नाम-वेक्टर का लचीलापन चाहते हैं

मैंने मूल रूप से लेबल को एक नामित वेक्टर में रखा है ताकि लेबल भ्रमित या स्विच न हों। labellerअभिव्यक्ति शायद आसान हो सकता है, लेकिन यह कम से कम काम करता है पर (सुधार बहुत स्वागत करते हैं)। पहलू (कारक) की रक्षा के लिए `(पीछे के उद्धरण) नोट करें।

n <- 10
x <- seq(0, 300, length.out = n)

# I have my data in a "long" format
my_data <- data.frame(
  Type = as.factor(c(rep('dl/l', n), rep('alpha', n))),
  T = c(x, x),
  Value = c(x*0.1, sqrt(x))
)

# the label names as a named vector
type_names <- c(
  `nonsense` = "this is just here because it looks good",
  `dl/l` = Linear~Expansion~~Delta*L/L[Ref]~"="~"[%]", # bquote expression
  `alpha` = Linear~Expansion~Coefficient~~alpha~"="~"[1/K]"
  )


ggplot() + 
  geom_point(data = my_data, mapping = aes(T, Value)) + 
  facet_wrap(. ~ Type, scales="free_y", 
             labeller = label_bquote(.(as.expression(
               eval(parse(text = paste0('type_names', '$`', Type, '`')))
               )))) +
  labs(x="Temperature [K]", y="", colour = "") +
  theme(legend.position = 'none')

यहां छवि विवरण दर्ज करें


1

सरल समाधान ( यहाँ से ):

p <- ggplot(mtcars, aes(disp, drat)) + geom_point()
# Example (old labels)
p + facet_wrap(~am)


to_string <- as_labeller(c(`0` = "Zero", `1` = "One"))
# Example (New labels)
p + facet_wrap(~am, labeller = to_string)

0

थोड़ी देर के लिए संघर्ष करने के बाद, क्या मैंने पाया है कि हम का उपयोग कर सकते है fct_relevel()और fct_recode()से forcatsसंयोजन के रूप में पहलुओं का क्रम बदलने के रूप में अच्छी तरह पहलू लेबल ठीक। मुझे यकीन नहीं है कि यह डिजाइन द्वारा समर्थित है, लेकिन यह काम करता है! नीचे दिए गए प्लॉट देखें:

library(tidyverse)

before <- mpg %>%
  ggplot(aes(displ, hwy)) + 
  geom_point() +
  facet_wrap(~class)
before

after <- mpg %>%
  ggplot(aes(displ, hwy)) + 
  geom_point() + 
  facet_wrap(
    vars(
      # Change factor level name
      fct_recode(class, "motorbike" = "2seater") %>% 
        # Change factor level order
        fct_relevel("compact")
    )
  )
after

2020-02-16 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.