พล็อต ggplot2 ที่ไม่มีแกน, ตำนาน, ฯลฯ


139

ฉันต้องการใช้ hexbin ของ bioconductor (ซึ่งฉันสามารถทำได้) เพื่อสร้างพล็อตที่เติมพื้นที่แสดงผลทั้งหมด (png) - ไม่มีแกน, ไม่มีป้าย, ไม่มีพื้นหลัง, ไม่มีนูติน '


1
จะเป็นการง่ายกว่าไหมถ้าจะสร้างพล็อต hexbin และครอบตัดในโปรแกรมแก้ไขรูปภาพ
joran

3
ลองtheme_void()
Brian D

คำตอบ:


182

ตามความคิดเห็นของฉันในคำตอบของ Chase คุณสามารถลบสิ่งนี้ได้หลายอย่างโดยใช้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())

ดูเหมือนว่ายังมีขอบเล็ก ๆ รอบ ๆ ขอบของ. png ที่เกิดขึ้นเมื่อฉันบันทึกสิ่งนี้ บางทีคนอื่นรู้วิธีลบแม้กระทั่งองค์ประกอบนั้น

(บันทึกย้อนหลัง: ตั้งแต่ggplot2เวอร์ชัน 0.9.2 optsเลิกใช้แล้วให้ใช้theme()และแทนที่theme_blank()ด้วยelement_blank())


1
ขอบคุณมาก! ฉันพบโซลูชันที่คล้ายกันที่groups.google.com/group/ggplot2/browse_thread/thread/…
user1320487

ความคิดเห็นในการผ่าน: ในบางกรณีtheme(axis.ticks=element_blank())ใช้งานไม่ได้และtheme(axis.ticks.x=element_blank())อาจเป็นข้อบกพร่องชั่วคราวที่ใดที่หนึ่ง (ฉันมีชุดรูปแบบของตัวเองแล้วฉันพยายามแทนที่: เฉพาะaxis.ticks.xและaxis.ticks.yทำงาน)
Patrick

106

Re: การเปลี่ยน opts เป็น theme ฯลฯ (สำหรับคนที่ขี้เกียจ):

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

คำตอบปัจจุบันไม่สมบูรณ์หรือไม่มีประสิทธิภาพ นี่คือ (อาจ) วิธีที่สั้นที่สุดในการบรรลุผลลัพธ์ (โดยใช้theme_void():

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

ผลลัพธ์ที่ได้คือ:

ป้อนคำอธิบายรูปภาพที่นี่


หากคุณสนใจเพียงแค่กำจัดฉลากให้labs(x="", y="")ทำตามเคล็ดลับ:

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"))แนะนำว่าไม่ใช่โมฆะ 100%
baptiste

ห้องแล็บ (x = "", y = "") ไม่ปรากฏว่าจะลบแกนเพียงแค่ป้ายกำกับ
miratrix

@ Miratrix ขออภัยความผิดพลาดของฉัน Updated
luchonacho

5
@luchonacho การใช้labs(x="",y="")พื้นที่ว่างของชื่อแกนเพราะจริงๆแล้วมีชื่ออยู่พวกมันแค่ไม่มีสัญญาณ หากต้องการลบชื่อแกนและพื้นที่สำหรับพวกมันจะดีกว่าที่จะใช้+ theme(axis.title = element_blank())
Didzis Elferts

6
labs(x = NULL)หรือxlab(NULL)เป็นวิธีอื่น
PatrickT

42
'opts' is deprecated.

ในการggplot2 >= 0.9.2ใช้งาน

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

6
ฉันรู้ว่าคุณยังไม่มีสิทธิ์แก้ไข แต่ถ้าคุณเห็นคำตอบ ggplot2 อื่น ๆ ของฉันที่ต้องได้รับการปรับปรุงใหม่: opts () อย่าลังเลที่จะแนะนำการแก้ไข ฉันจะได้รับการแจ้งเตือนและสามารถรวมเข้าด้วยกันได้
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 () แสดงรายการของวิวพอร์ตและออบเจ็กต์
grob

ปรากฏว่าใน ggplot รุ่นอื่นที่ฉันใช้ชื่อพาเนลแตกต่างกัน
amaurel

xy <- data.frame (x = 1: 10, y = 10: 1) พล็อต <- ggplot (data = xy) + geom_point (aes (x = x, y = y)) แผงพล็อต = 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 (แผงควบคุม)
amaurel

-1

สิ่งนี้ทำในสิ่งที่คุณต้องการหรือไม่?

 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")

กำจัดตำนาน แต่แกน x และ y และตารางพื้นหลังยังคงอยู่
user1320487
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.