कुल्हाड़ियों, किंवदंतियों, आदि के बिना ggplot2 साजिश


139

मैं एक प्लॉट उत्पन्न करने के लिए बायोकैक्टर के हेक्सबिन (जो मैं कर सकता हूं) का उपयोग करना चाहता हूं जो पूरे (पीएनजी) डिस्प्ले क्षेत्र को भरता है - कोई कुल्हाड़ी नहीं, कोई लेबल नहीं, कोई पृष्ठभूमि नहीं, कोई नथिन नहीं।


1
क्या एक हेक्सबिन प्लॉट और फसल को एक छवि संपादक में बनाना आसान नहीं होगा?
Joran

3
कोशिशtheme_void()
ब्रायन डी

जवाबों:


182

चेस के जवाब में मेरी टिप्पणी के अनुसार, आप इस सामान का उपयोग करके बहुत कुछ हटा सकते हैं 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())

ऐसा लगता है कि परिणामी के किनारे के आसपास एक छोटा सा मार्जिन अभी भी है। जब मैं इसे सहेजता हूं, तो इसे हटा दें। शायद किसी और को पता है कि उस घटक को भी कैसे निकालना है।

(ऐतिहासिक नोट: 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काम करते हैं।)
पैट्रिक टीटी

106

पुन: बदलने के लिए opts विषय आदि (आलसी लोगों के लिए):

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% शून्य नहीं है
बैपटिस्ट

प्रयोगशालाओं (x = "", y = "") कुल्हाड़ियों को हटाने के लिए प्रकट नहीं होता है, बस लेबल।
मिरेट्रिक्स

@miratrix माफ करना, मेरी गलती है। अपडेट किया गया।
ल्यूकोनाचो

5
@ ल्यूकोनाचो अक्षों के शीर्ष labs(x="",y="")स्थान का उपयोग करता है क्योंकि वास्तव में शीर्षक होते हैं, वे केवल संकेतों के बिना होते हैं। उनके लिए अक्ष के शीर्षक और स्थान को हटाने के लिए इसका उपयोग करना बेहतर है+ theme(axis.title = element_blank())
डिडिज़ एलफर्ट्स

6
labs(x = NULL)या xlab(NULL)अन्य तरीके हैं।
पैट्रिक टीटी

42
'opts' is deprecated.

में ggplot2 >= 0.9.2उपयोग

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

6
मुझे लगता है कि आपके पास अभी तक विशेषाधिकार संपादित नहीं हैं, लेकिन यदि आप मेरे अन्य ggplot2 जवाबों की जानकारी देते हैं, जिन्हें अपडेट किए जाने की आवश्यकता है: opts () एक संपादन का सुझाव देने के लिए स्वतंत्र महसूस करते हैं। मुझे एक सूचना मिलेगी और मैं इसे स्वयं शामिल कर सकता हूं।
19

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"
रोमन लुसट्रिक

ग्रिड.ल्स () व्यूपोर्ट और ग्रोब वस्तुओं की सूची प्रदर्शित करते हैं
amaurel

ऐसा प्रतीत होता है कि
ggplot के

xy <- data.frame (x = 1: 10, y = 10: 1) प्लॉट <- ggplot (डेटा = xy) + geom_point (anes (x = x, y = y)) प्लॉट पैनल = ग्रिड। " पैनल 3-4 "" ग्रिड.न्यूपेज () पुश व्यूपोर्ट (व्यूपोर्ट (डब्ल्यू = 1, एच = 1, नाम = "लेआउट")) पुश व्यूपोर्ट (व्यूपोर्ट (डब्ल्यू = 1, एच = 1, नाम = पैनल-3-) 4 ")) upViewport (1) upViewport (1) ग्रिड.ड्राइव (पैनल)
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")

किंवदंती से छुटकारा मिल जाता है लेकिन एक्स और वाई कुल्हाड़ियों, और पृष्ठभूमि ग्रिड, अभी भी हैं।
user1320487
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.