Facet_wrap लेबल पूरी तरह से हटा दें


85

मैं स्पार्कलाइन प्रभाव का एक प्रकार बनाने के लिए पहलुओं को पूरी तरह से लेबल निकालना चाहता हूं , जैसा कि दर्शकों के लिए लेबल अप्रासंगिक हैं, सबसे अच्छा मैं इसके साथ आ सकता हूं:

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

तो क्या मैं (अब कोरी) स्ट्रिप.बैकग्राउंड से पूरी तरह से छुटकारा पा सकता हूं ताकि "स्पार्कलाइन" के लिए अधिक जगह की अनुमति मिल सके?

या वैकल्पिक रूप से इस तरह की द्विआधारी मूल्यवान समय-श्रृंखला की एक बड़ी संख्या के लिए " स्पार्कलाइन " प्रभाव प्राप्त करने का एक बेहतर तरीका है ?

जवाबों:


134

Ggplot v2.1.0 या उच्चतर के लिए, element_blank()अवांछित तत्वों को हटाने के लिए उपयोग करें:

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

इस स्थिति में, जिस तत्व को आप हटाने का प्रयास कर रहे हैं उसे कहा जाता है strip

पैनल शीर्षक के बिना ggplot2 का आंकड़ा


Ggplot grob लेआउट का उपयोग करके वैकल्पिक

ggplot(V2.1.0 से पहले) के पुराने संस्करणों में , स्ट्रिप टेक्स्ट gtable लेआउट में पंक्तियों को घेरता है।

element_blank पाठ और पृष्ठभूमि को हटाता है, लेकिन यह उस स्थान को नहीं हटाता है जो पंक्ति ने कब्जा कर लिया है।

यह कोड उन पंक्तियों को लेआउट से निकालता है:

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)

किसी और हो रही है Error in apply(strip_mat, 1, max_height) : dim(X) must have a positive length?
पैट्रिक

25

मैं ggplot2 संस्करण 1 का उपयोग कर रहा हूं और आवश्यक आदेश बदल गए हैं। के बजाय

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

अब आप उपयोग करें

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

अधिक विवरण के लिए http://docs.ggplot2.org/current/theme.html देखें


8

सैंडी का अद्यतन उत्तर अच्छा लगता है, लेकिन संभवतः ggplot के अपडेट से अप्रचलित हो गया है? मैं निम्नलिखित कोड (सैंडी के मूल उत्तर का एक सरलीकृत संस्करण) क्या बता सकता हूं, बिना किसी अतिरिक्त स्थान के शॉन के मूल ग्राफ को पुन: प्रस्तुत करता है:

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

मैं ggplot 2.0.0 का उपयोग कर रहा हूं।


4

जैसा कि मैं बता सकता हूं, सैंडी का जवाब सही है लेकिन मुझे लगता है कि यह ध्यान देने योग्य है कि प्लॉट की चौड़ाई में कोई अंतर नहीं है, जिसमें कोई पहलू नहीं है और हटाए गए पहलुओं के साथ एक भूखंड की चौड़ाई है।

यह स्पष्ट नहीं है जब तक आप इसकी तलाश नहीं करते हैं, लेकिन यदि आप व्यूपोर्ट लेआउट का उपयोग करके भूखंडों को स्टैक करते हैं जो विकम अपनी पुस्तक में सुझाता है, तो अंतर स्पष्ट हो जाता है।


1
क्या आप इस पर एक उदाहरण के साथ विस्तार कर सकते हैं?
२१

यहाँ हम चलते हैं - लिंक का प्रयास करें । मैं ggplot के 'हीरे' डेटासेट का उपयोग करता हूं इसलिए इसे किसी के लिए भी काम करना चाहिए। ध्यान दें कि पहलू ग्राफ का सही मार्जिन अनपेक्षित ग्राफ की तुलना में थोड़ा संकीर्ण है।
सीडब्ल्यू डिलन

यह एक अच्छी तुलना नहीं है क्योंकि यह facet_grid (साइड पर पैनल टेस्ट) के साथ facet_wrap (ओपी के प्रश्न में शीर्ष पर पैनल के साथ) पर स्विच करता है। मुख्य मुद्दा यह है कि पैनल टेक्स्ट नॉन कम्प्रेसिबल है: यदि आप ओपी के प्रश्न में कप्लोट के लिए विंडो का आकार बदलते हैं, तो आप आसानी से उस समस्या को देख सकते हैं जो पैनल टेक्स्ट का कारण बन सकता है। चूंकि एक्स-अक्ष में अक्सर पहले से ज्ञात मूल्य होते हैं और वाई-अक्ष में अक्सर पहले से अज्ञात मूल्य होते हैं, यह विशेष रूप से दुर्भाग्यपूर्ण है।
मैटबाग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.