2011-07-18 47 views

Trả lời

86

Để thay đổi màu nền của bảng điều khiển, sử dụng đoạn mã sau:

myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red')) 

Để thay đổi màu của cốt truyện (nhưng không phải màu của bảng điều khiển), bạn có thể làm:

myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red')) 

Xem chi tiết chủ đề khác Quick reference sheet for legends, axes and themes.

+39

Ngoài ra còn có 'theme_bw', cung cấp cho bạn nền trắng và đường lưới màu xám. Tôi sử dụng nó tất cả các thời gian, như trong in nó trông tốt hơn nhiều so với nền màu xám mặc định: 'myplot + theme_bw()' – ROLO

+0

@ ROLO: Nice! Có cách nào để áp dụng điều này cho tất cả các ô theo mặc định? – krlmlr

+9

Đặt điều này ở đầu tập lệnh của bạn cho các ggplots B & W mặc định: 'ggplot <- function (...) { \t ggplot2 :: ggplot (...) + theme_bw() } ' – ROLO

44

Để tránh bị phản đối optstheme_rect sử dụng:

myplot + theme(panel.background = element_rect(fill='green', colour='red')) 

Để xác định chủ đề tùy chỉnh của riêng bạn, dựa trên theme_gray nhưng với một số thay đổi của bạn và một vài tính năng bổ sung thêm bao gồm kiểm soát của màu Gridline/size (nhiều lựa chọn có sẵn để chơi với at ggplot2.org):

theme_jack <- function (base_size = 12, base_family = "") { 
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      axis.text = element_text(colour = "white"), 
      axis.title.x = element_text(colour = "pink", size=rel(3)), 
      axis.title.y = element_text(colour = "blue", angle=45), 
      panel.background = element_rect(fill="green"), 
      panel.grid.minor.y = element_line(size=3), 
      panel.grid.major = element_line(colour = "orange"), 
      plot.background = element_rect(fill="red") 
    ) 
} 

để làm cho chủ đề tùy chỉnh của bạn mặc định khi ggplot được gọi là trong tương lai, mà không che:

theme_set(theme_jack()) 

Nếu bạn muốn thay đổi một yếu tố của chủ đề hiện thiết lập:

theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red")) 

Để lưu trữ các chủ đề mặc định hiện tại như một đối tượng:

theme_pink <- theme_get() 

Lưu ý rằng theme_pink là một danh sách trong khi theme_jack là một hàm. Vì vậy, để trả lại chủ đề cho theme_jack sử dụng theme_set(theme_jack()) trong khi quay lại sử dụng theme_pink theme_set(theme_pink).

Bạn có thể thay thế theme_gray theo theme_bw trong định nghĩa theme_jack nếu bạn muốn. Đối với chủ đề tùy chỉnh của bạn giống theme_bw nhưng với tất cả các đường lưới (x, y, lớn và nhỏ) tắt:

theme_nogrid <- function (base_size = 12, base_family = "") { 
    theme_bw(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      panel.grid = element_blank() 
    ) 
} 

Cuối cùng một chủ đề triệt để hơn hữu ích khi âm mưu choropleths hay các bản đồ khác trong ggplot, dựa trên thảo luận here nhưng được cập nhật để tránh bị phản đối. Mục tiêu ở đây là xóa nền màu xám và bất kỳ tính năng nào khác có thể phân tâm khỏi bản đồ.

theme_map <- function (base_size = 12, base_family = "") { 
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
     theme(
      axis.line=element_blank(), 
      axis.text.x=element_blank(), 
      axis.text.y=element_blank(), 
      axis.ticks=element_blank(), 
      axis.ticks.length=unit(0.3, "lines"), 
      axis.ticks.margin=unit(0.5, "lines"), 
      axis.title.x=element_blank(), 
      axis.title.y=element_blank(), 
      legend.background=element_rect(fill="white", colour=NA), 
      legend.key=element_rect(colour="white"), 
      legend.key.size=unit(1.2, "lines"), 
      legend.position="right", 
      legend.text=element_text(size=rel(0.8)), 
      legend.title=element_text(size=rel(0.8), face="bold", hjust=0), 
      panel.background=element_blank(), 
      panel.border=element_blank(), 
      panel.grid.major=element_blank(), 
      panel.grid.minor=element_blank(), 
      panel.margin=unit(0, "lines"), 
      plot.background=element_blank(), 
      plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"), 
      plot.title=element_text(size=rel(1.2)), 
      strip.background=element_rect(fill="grey90", colour="grey50"), 
      strip.text.x=element_text(size=rel(0.8)), 
      strip.text.y=element_text(size=rel(0.8), angle=-90) 
     ) 
} 
+1

Điều này rất hữu ích, cảm ơn. FYI, tôi đã tìm thấy đối số 'plot.background' phải được chuyển đến' chủ đề'. Các đối số khác là tùy chọn. –

Các vấn đề liên quan