2015-05-06 12 views
5

Cân nhắc ggplot đơn giản này:Làm cách nào để kiểm soát kích thước canvas trong ggplot?

enter image description here

tôi vẽ một lợi thế cạnh màu đen trên nó, vì vậy nó dễ dàng hơn để hình dung như thế nào lớn nó được.

Tôi không hiểu tại sao cốt truyện này quá lớn. Không có gì trong mã của tôi nói ggplot rằng tôi muốn bất kỳ khu vực nào ở trên hoặc bên dưới cốt truyện.

Điều này dường như mang lại cho tôi mọi lúc. Làm cách nào để kiểm soát kích thước canvas trong ggplot?

library(ggplot2) 

hex=c("#CC0000", "#90BD31", "#178CCB")  

q <- ggplot(data=NULL) 
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1]) 
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2]) 
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3]) 
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4) 
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4) 
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4) 
    q <- q + coord_fixed() 
    q <- q + theme_classic() 
    q <- q + 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(), 
        panel.background=element_blank(), 
        panel.border=element_blank(), 
        panel.grid.major=element_blank(), 
        panel.grid.minor=element_blank(), 
        plot.background=element_blank()) 
    q 
+0

Tôi luôn tìm thấy rằng chìa khóa để nhận được vải phù hợp và tất cả các không gian khác là để kiểm soát sản lượng đồ họa thiết bị trực tiếp. Mở một tệp bằng png(), pdf() hoặc các yêu thích khác và đặt kích thước cụ thể theo pixel, cm hoặc inch thành đầu ra phù hợp với nhu cầu của bạn. Bất kỳ trợ giúp nào khác sẽ cần một ví dụ hoàn toàn có thể sao chép được với dữ liệu mà bạn không cung cấp ở trên (hex bị thiếu). –

+0

xin lỗi về thiếu 'hex' ... Tôi sẽ thêm nó. Tôi đồng ý với bạn. Những gì tôi đã không đề cập đến, là ggplot này đang được sử dụng trong một ứng dụng sáng bóng. Vì vậy, tôi không thể kiểm soát thiết bị đầu ra đồ họa theo cách hợp lý như bạn đã đề xuất. PS ngoài 'hex', mọi thứ sẽ được tái sản xuất. –

+0

Cả hai 'shiny :: plotOutput' và' shiny :: renderPlot' đều lấy các đối số chiều cao và chiều rộng ... – Gregor

Trả lời

5

Sử dụng ggplot2 plot.margin and/or panel.margin theme options bạn sẽ có thể kiểm soát lề nội bộ, khi bạn đã đặt đủ kích thước đầu ra của canvas. Điều này chắc chắn sẽ làm việc cho các thiết bị đồ họa bình thường và cũng nên làm việc trong ứng dụng sáng bóng:

library(ggplot2) 
library(grid) 

hex=c("#CC0000", "#90BD31", "#178CCB")  

q <- ggplot(data=NULL) 
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1]) 
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2]) 
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3]) 
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4) 
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4) 
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4) 
    q <- q + coord_fixed() 
    q <- q + theme_classic() 
    q <- q + 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(), 
        panel.background=element_blank(), 
        panel.border=element_blank(), 
        panel.grid.major=element_blank(), 
        panel.grid.minor=element_blank(), 
        plot.background=element_blank(), 
        plot.margin=unit(c(0,0,0,0), "cm"), 
        panel.margin=unit(c(0,0,0,0), "cm")) 
    q 

No margin output

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