當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R ggplot2 labellers 有用的貼標機函數


貼標機函數負責格式化小麵網格和包的條帶標簽。它們中的大多數接受 multi_line 參數來控製多個因子(在公式中定義,例如 ~first + second )是否應顯示在以逗號分隔的單行上,或者每個因子都顯示在自己的行上。

用法

label_value(labels, multi_line = TRUE)

label_both(labels, multi_line = TRUE, sep = ": ")

label_context(labels, multi_line = TRUE, sep = ": ")

label_parsed(labels, multi_line = TRUE)

label_wrap_gen(width = 25, multi_line = TRUE)

參數

labels

標簽的 DataFrame 。通常隻包含一個元素,但多個因子的分麵需要多個標簽變量。

multi_line

是否在單獨的行上顯示多個因子的標簽。

sep

分隔變量和值的字符串。

width

包條帶之前的最大字符數。

細節

label_value()僅顯示因子的值,而label_both()同時顯示變量名稱和因子值。 label_context() 是 context-dependent,對於單因子分麵使用 label_value(),當涉及多個因子時使用 label_both()label_wrap_gen() 使用base::strwrap() 進行換行。

label_parsed() 將標簽解釋為繪圖數學表達式。 label_bquote() 提供了一種更靈活的構建繪圖數學表達式的方法。有關參數語法的詳細信息,請參閱示例和bquote()

編寫新的標簽函數

請注意,編寫貼標器函數的一種簡單方法是使用 as_labeller() 轉換對字符向量進行操作的函數。

貼標器函數接受標簽 DataFrame (字符向量),其中每個因子包含一列。 ~first + second 類型的公式會出現多個因子。

返回值必須是一個矩形列表,其中每個 'row' 代表一個麵。列表元素可以是字符向量或繪圖表達式列表。當返回多個元素時,它們會顯示在自己的新行上(即每個方麵都有一個多行標簽條)。

為了說明這一點,假設您的貼標器返回一個由兩個長度為 3 的字符向量組成的列表。這是一個矩形列表,因為所有元素都具有相同的長度。第一個方麵將獲取每個向量的第一個元素並將它們每個顯示在自己的行上。然後第二個方麵獲取每個向量的第二個元素,依此類推。

如果它對您的貼標機有用,您可以檢索傳入標簽數據幀的 type 屬性。該屬性的值反映貼標機正在處理的條帶類型:"cols" 表示列,"rows" 表示行。請注意,facet_wrap() 默認情況下具有列,當使用 switch 選項切換條帶時具有行。 facet 屬性還提供標簽上的元數據。它采用值 "grid""wrap"

為了與 labeller() 兼容,每個貼標器函數必須具有 labeller S3 類。

例子

mtcars$cyl2 <- factor(mtcars$cyl, labels = c("alpha", "beta", "gamma"))
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()

# The default is label_value
p + facet_grid(. ~ cyl, labeller = label_value)


# \donttest{
# Displaying both the values and the variables
p + facet_grid(. ~ cyl, labeller = label_both)


# Displaying only the values or both the values and variables
# depending on whether multiple factors are facetted over
p + facet_grid(am ~ vs+cyl, labeller = label_context)


# Interpreting the labels as plotmath expressions
p + facet_grid(. ~ cyl2)

p + facet_grid(. ~ cyl2, labeller = label_parsed)

# }
源代碼:R/labeller.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Useful labeller functions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。