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


R ggplot2 sec_axis 指定輔助軸


此函數與位置刻度結合使用以創建與主軸相對的輔助軸。所有輔助軸必須基於主軸的一對一轉換。

用法

sec_axis(
  trans = NULL,
  name = waiver(),
  breaks = waiver(),
  labels = waiver(),
  guide = waiver()
)

dup_axis(
  trans = ~.,
  name = derive(),
  breaks = derive(),
  labels = derive(),
  guide = derive()
)

derive()

參數

trans

變換的公式或函數

name

輔助軸的名稱

breaks

之一:

  • NULL 不間斷

  • waiver() 用於由轉換對象計算的默認中斷

  • 位置的數值向量

  • 將限製作為輸入並返回中斷作為輸出的函數

labels

之一:

  • NULL 無標簽

  • waiver() 用於由轉換對象計算的默認標簽

  • 給出標簽的字符向量(必須與 breaks 長度相同)

  • 將中斷作為輸入並返回標簽作為輸出的函數

guide

將用於在繪圖上渲染軸的位置指南。通常這是guide_axis()

細節

sec_axis() 用於創建輔助軸的規格。除了 trans 參數之外,任何參數都可以設置為 derive(),這將導致輔助軸繼承主軸的設置。

dup_axis() 是作為創建輔助軸的簡寫形式提供的,該輔助軸是主軸的副本,從而有效地鏡像主軸。

從 v3.1 開始,日期和日期時間刻度的輔助軸函數有限。與其他連續刻度不同,日期和日期時間刻度的輔助軸轉換必須遵循其主要 POSIX 數據結構。這意味著它們隻能通過加法或減法進行轉換,例如~ . + hms::hms(days = 8)~ . - 8*60*60 。非線性變換將返回錯誤。要在這種情況下生成事件以來的次軸,用戶可以考慮調整次軸標簽。

例子

p <- ggplot(mtcars, aes(cyl, mpg)) +
  geom_point()

# Create a simple secondary axis
p + scale_y_continuous(sec.axis = sec_axis(~ . + 10))


# Inherit the name from the primary axis
p + scale_y_continuous("Miles/gallon", sec.axis = sec_axis(~ . + 10, name = derive()))


# Duplicate the primary axis
p + scale_y_continuous(sec.axis = dup_axis())


# You can pass in a formula as a shorthand
p + scale_y_continuous(sec.axis = ~ .^2)


# Secondary axes work for date and datetime scales too:
df <- data.frame(
  dx = seq(
    as.POSIXct("2012-02-29 12:00:00", tz = "UTC"),
    length.out = 10,
    by = "4 hour"
  ),
  price = seq(20, 200000, length.out = 10)
 )

# This may useful for labelling different time scales in the same plot
ggplot(df, aes(x = dx, y = price)) +
  geom_line() +
  scale_x_datetime(
    "Date",
    date_labels = "%b %d",
    date_breaks = "6 hour",
    sec.axis = dup_axis(
      name = "Time of Day",
      labels = scales::time_format("%I %p")
    )
  )


# or to transform axes for different timezones
ggplot(df, aes(x = dx, y = price)) +
  geom_line() +
  scale_x_datetime("
    GMT",
    date_labels = "%b %d %I %p",
    sec.axis = sec_axis(
      ~ . + 8 * 3600,
      name = "GMT+8",
      labels = scales::time_format("%b %d %I %p")
    )
  )


源代碼:R/axis-secondary.R

相關用法


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