cốt truyện ggplot2 không có trục, truyền thuyết, v.v.


139

Tôi muốn sử dụng hexbin của bộ lọc sinh học (mà tôi có thể làm) để tạo ra một âm mưu lấp đầy toàn bộ khu vực hiển thị (png) - không có trục, không nhãn, không nền, không nuthin '.


1
Sẽ không dễ dàng hơn để tạo một âm mưu hexbin và cắt nó trong trình chỉnh sửa hình ảnh?
Joran

3
thửtheme_void()
Brian D

Câu trả lời:


182

Theo nhận xét của tôi trong câu trả lời của Chase, bạn có thể xóa rất nhiều nội dung này bằng cách sử dụng element_blank:

dat <- data.frame(x=runif(10),y=runif(10))

p <- ggplot(dat, aes(x=x, y=y)) + 
        geom_point() +
        scale_x_continuous(expand=c(0,0)) + 
        scale_y_continuous(expand=c(0,0))   

p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
          axis.text.y=element_blank(),axis.ticks=element_blank(),
          axis.title.x=element_blank(),
          axis.title.y=element_blank(),legend.position="none",
          panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
          panel.grid.minor=element_blank(),plot.background=element_blank())

Có vẻ như vẫn còn một lề nhỏ xung quanh rìa của kết quả .png khi tôi lưu phần này. Có lẽ ai đó biết làm thế nào để loại bỏ ngay cả thành phần đó.

(Lưu ý lịch sử: Vì ggplot2 phiên bản 0.9.2, optsđã không được chấp nhận. Thay vào đó hãy sử dụng theme()và thay thế theme_blank()bằng element_blank().)


1
Cảm ơn nhiều! Tôi cũng tìm thấy một giải pháp tương tự tại Groups.google.com/group/ggplot2/browse_thread/thread/iêu
user1320487

Nhận xét khi chuyển: Trong một số trường hợp, theme(axis.ticks=element_blank())không hoạt động tốt theme(axis.ticks.x=element_blank()), có thể là lỗi tạm thời ở đâu đó (tôi có bộ chủ đề của riêng mình, sau đó tôi cố gắng ghi đè: chỉ axis.ticks.xaxis.ticks.ythực hiện công việc.)
PatrickT

106

Re: thay đổi opts thành chủ đề vv (cho những người lười biếng):

theme(axis.line=element_blank(),
      axis.text.x=element_blank(),
      axis.text.y=element_blank(),
      axis.ticks=element_blank(),
      axis.title.x=element_blank(),
      axis.title.y=element_blank(),
      legend.position="none",
      panel.background=element_blank(),
      panel.border=element_blank(),
      panel.grid.major=element_blank(),
      panel.grid.minor=element_blank(),
      plot.background=element_blank())

59

Câu trả lời hiện tại là không đầy đủ hoặc không hiệu quả. Đây là (có lẽ) cách ngắn nhất để đạt được kết quả (sử dụng theme_void():

data(diamonds) # Data example
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) +
      theme_void() + theme(legend.position="none")

Kết quả là:

nhập mô tả hình ảnh ở đây


Nếu bạn quan tâm đến việc loại bỏ các nhãn , hãy labs(x="", y="")thực hiện mẹo:

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))đề nghị nó không phải là 100% khoảng trống
baptiste

Các phòng thí nghiệm (x = "", y = "") không xuất hiện để loại bỏ các trục, chỉ các nhãn.
miratrix

@miratrix xin lỗi, lỗi của tôi. Cập nhật.
luchonacho

5
@luchonacho Sử dụng labs(x="",y="")không gian của tiêu đề trục vì thực sự có tiêu đề, chúng chỉ là không có dấu hiệu. Để xóa tiêu đề trục và không gian cho chúng, tốt hơn là sử dụng+ theme(axis.title = element_blank())
Didzis Elferts

6
labs(x = NULL)hoặc xlab(NULL)là những cách khác.
PatrickT

42
'opts' is deprecated.

đang ggplot2 >= 0.9.2sử dụng

p + theme(legend.position = "none") 

6
Tôi nhận ra rằng bạn chưa có đặc quyền chỉnh sửa, nhưng nếu bạn phát hiện ra các câu trả lời ggplot2 khác của tôi cần được cập nhật lại: opts () hãy đề nghị chỉnh sửa. Tôi sẽ nhận được thông báo và có thể tự kết hợp nó.
Joran

3
xy <- data.frame(x=1:10, y=10:1)
plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y))
plot
panel = grid.get("panel-3-3")

grid.newpage()
pushViewport(viewport(w=1, h=1, name="layout"))
pushViewport(viewport(w=1, h=1, name="panel-3-3"))
upViewport(1)
upViewport(1)
grid.draw(panel)

Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
Roman Luštrik

Grid.ls () hiển thị danh sách các đối tượng khung nhìn và grob
amaurel

Dường như trong phiên bản khác của ggplot mà tôi đang sử dụng tên bảng điều khiển thì khác
amaurel

xy <- data.frame (x = 1: 10, y = 10: 1) cốt truyện <- ggplot (data = xy) + geom_point (aes (x = x, y = y)) bảng điều khiển cốt truyện = Grid.get (" panel-3-4 ") Grid.newpage () pushViewport (viewport (w = 1, h = 1, name =" layout ")) pushViewport (viewport (w = 1, h = 1, name =" panel-3- 4 ")) upViewport (1) upViewport (1) Grid.draw (bảng điều khiển)
amaurel

-1

Điều này có làm những gì bạn muốn?

 p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) +
 p + scale_x_continuous(expand=c(0,0)) + 
 scale_y_continuous(expand=c(0,0)) +
 opts(legend.position = "none")

thoát khỏi truyền thuyết nhưng các trục x và y, và lưới nền, vẫn còn đó.
dùng1320487
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.