Xóa hoàn toàn các nhãn facet_wrap


84

Tôi muốn loại bỏ hoàn toàn các nhãn cho các khía cạnh để tạo ra một loại hiệu ứng lấp lánh , vì đối với khán giả, các nhãn không liên quan, điều tốt nhất tôi có thể đưa ra là:

library(MASS)
library(ggplot2)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
     facet_wrap(~ID) + 
     theme(strip.text.x = element_text(size=0))

Vì vậy, tôi có thể loại bỏ hoàn toàn (bây giờ trống) strip.background để có thêm không gian cho "sparklines" không?

Hoặc có cách nào khác tốt hơn để có được hiệu ứng " sparkline " này cho một số lượng lớn các chuỗi thời gian có giá trị nhị phân như thế này không?

Câu trả lời:


132

Đối với ggplot v2.1.0 trở lên, hãy sử dụng element_blank()để xóa các phần tử không mong muốn:

library(MASS) # To get the data
library(ggplot2)

qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID) + 
theme(
  strip.background = element_blank(),
  strip.text.x = element_blank()
)

Trong trường hợp này, phần tử bạn đang cố gắng xóa được gọi strip.

ggplot2 hình không có tiêu đề bảng điều khiển


Thay thế bằng cách sử dụng bố cục háng ggplot

Trong các phiên bản cũ hơn của ggplot(trước v2.1.0), văn bản dải chiếm các hàng trong bố cục gtable.

element_blank loại bỏ văn bản và nền, nhưng nó không loại bỏ không gian mà hàng đã chiếm.

Mã này xóa các hàng đó khỏi bố cục:

library(ggplot2)
library(grid)

p <- qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID)

# Get the ggplot grob
gt <- ggplotGrob(p)

# Locate the tops of the plot panels
panels <- grep("panel", gt$layout$name)
top <- unique(gt$layout$t[panels])

# Remove the rows immediately above the plot panel
gt = gt[-(top-1), ]

# Draw it
grid.newpage()
grid.draw(gt)

có ai khác nhận được Error in apply(strip_mat, 1, max_height) : dim(X) must have a positive lengthkhông?
PatrickT

25

Tôi đang sử dụng ggplot2 phiên bản 1 và các lệnh bắt buộc đã thay đổi. Thay vì

ggplot() ... + 
opts(strip.background = theme_blank(), strip.text.x = theme_blank())

bây giờ bạn sử dụng

ggplot() ... + 
theme(strip.background = element_blank(), strip.text = element_blank())

Để biết thêm chi tiết, hãy xem http://docs.ggplot2.org/current/theme.html


7

Câu trả lời cập nhật của Sandy có vẻ tốt nhưng, có thể đã bị lỗi thời bởi các bản cập nhật cho ggplot? Từ những gì tôi có thể nói, đoạn mã sau (phiên bản đơn giản của câu trả lời ban đầu của Sandy) tái tạo biểu đồ ban đầu của Sean mà không có thêm khoảng trống:

library(ggplot2)
library(grid)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
 facet_wrap(~ID) + 
 theme(strip.text.x = element_blank())

Tôi đang sử dụng ggplot 2.0.0.


4

Gần như tôi có thể nói, câu trả lời của Sandy là đúng nhưng tôi nghĩ điều đáng nói là có vẻ như có một sự khác biệt nhỏ giữa chiều rộng của một ô không có khía cạnh và chiều rộng của một ô có các khía cạnh bị loại bỏ.

Nó không rõ ràng trừ khi bạn đang tìm kiếm nó, nhưng nếu bạn xếp các ô bằng cách sử dụng bố cục khung nhìn mà Wickham đề xuất trong cuốn sách của mình, sự khác biệt trở nên rõ ràng.


1
Bạn có thể giải thích thêm về điều này với một ví dụ?
mnel

Ở đây chúng tôi bắt đầu-- Hãy thử liên kết . Tôi sử dụng tập dữ liệu 'kim cương' của ggplot để nó hoạt động với mọi người. Lưu ý rằng lề phải của biểu đồ có mặt hơi hẹp hơn so với biểu đồ không có mặt.
CW Dillon

Đây không phải là một so sánh tốt vì nó chuyển sang facet_grid (với kiểm tra bảng điều khiển ở bên cạnh) từ facet_wrap (với bảng trên cùng, trong câu hỏi của OP). Vấn đề quan trọng là văn bản bảng điều khiển không thể nén được: nếu bạn thay đổi kích thước cửa sổ cho qplot trong câu hỏi của OP, bạn có thể dễ dàng thấy vấn đề mà văn bản bảng điều khiển có thể gây ra. Vì trục x thường có các giá trị đã biết trước đó và trục y thường có các giá trị chưa biết trước đó, điều này đặc biệt đáng tiếc.
MattBagg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.