मैं ggplot2 प्लॉट में वर्टिकल ग्रिडलाइन्स को कैसे दबा सकता हूं?


81

मैं एक बार चार्ट का निर्माण कर रहा हूं जिसके लिए बार क्षैतिज (x) प्लेसमेंट के संकेत के रूप में पर्याप्त हैं, इसलिए मैं सुपरफ्लस वर्टिकल ग्रिडलाइन्स खींचने से बचना चाहता हूं।

मैं समझता हूं कि ऑप्ट्स () में मामूली और प्रमुख ग्रिडलाइन्स को कैसे स्टाइल करना है, लेकिन मैं अपने जीवन के लिए यह पता नहीं लगा सकता कि कैसे सिर्फ ऊर्ध्वाधर ग्रिडलाइन्स को दबाया जाए।

library(ggplot2)

data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))

ggplot(data, aes(x, y)) +
  geom_bar(stat = 'identity') +
  opts(
    panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),
    panel.grid.minor = theme_line(colour = NA),
    panel.background = theme_rect(colour = NA),
    axis.ticks = theme_segment(colour = NA)
  )

इस बिंदु पर, ऐसा लग रहा है कि मैं सभी ग्रिडलाइन्स को दबाने जा रहा हूं और फिर उन्हें geom_hline () के साथ वापस खींचूंगा, जो एक तरह का दर्द लगता है (यह भी, यह पूरी तरह से स्पष्ट नहीं है कि मैं टिक कैसे पा सकता हूं geom_hline () को खिलाने के लिए / प्रमुख ग्रिडलाइन स्थिति

किसी भी विचार की सराहना की जाएगी!

जवाबों:


24

प्रयोग करके देखें

scale_x_continuous (ब्रेक = NULL)

यह सभी वर्टिकल ग्रिडलाइन्स के साथ-साथ एक्स-अक्ष टिकमार्क लेबल को हटा देगा।


9
यह किया है, लेकिन अब, जैसा कि आपने उल्लेख किया है, मेरे पास एक्स-अक्ष लेबल नहीं हैं, जिनकी मुझे आवश्यकता है - किसी भी विचार के रूप में कि उन्हें वापस कैसे लिखा जाए?
तारेक

18
नया संस्करण कहता है,Please use breaks = NULL to remove breaks in the scale. (Deprecated; last used in version 0.8.9)
स्टेट-आर

scale_x_discrete(breaks = NULL)एक्स चर असतत है जब उपयोग करने के लिए एक है।
luchonacho

4
यह तब काम नहीं करता जब मैं लेबल लगाना चाहूंगा लेकिन कोई विराम नहीं।
किराने का सामान 23

@ किराने वाले को यकीन नहीं है कि आप अभी भी एक समाधान की तलाश कर रहे हैं, लेकिन मुझे यहां ggExtra पुस्तकालय से हटा दिया गया है: rdrr.io removeGrid , जो अक्ष लेबल को बनाए रखते हुए ग्रिड लाइनों को हटा देता है।
SHKT

176

Ggplot2 0.9.2 के रूप में, "थीम" का उपयोग करना बहुत आसान हो गया है । अब आप पैनल को अलग-अलग थीम असाइन कर सकते हैं। नीचे दिए गए अनुसार x.grid.major.x और panel.grid.major.y।

#   simulate data for the bar graph
data <- data.frame( X = c("A","B","C"), Y = c(1:3) )    

#   make the bar graph
ggplot( data  ) +
    geom_bar( aes( X, Y ) ) +
    theme( # remove the vertical grid lines
           panel.grid.major.x = element_blank() ,
           # explicitly set the horizontal lines (or they will disappear too)
           panel.grid.major.y = element_line( size=.1, color="black" ) 
    )

इस उदाहरण का परिणाम काफी बदसूरत लग रहा है, लेकिन यह दर्शाता है कि क्षैतिज रेखाओं और एक्स-अक्ष टिक-मार्क्स को संरक्षित करते हुए ऊर्ध्वाधर लाइनों को कैसे हटाया जाए।


2
शायद यह एक अद्यतन की जरूरत है: यह मुझे देता हैError: stat_count() must not be used with a y aesthetic.
गैसपर

1
त्रुटि अभी भी 6/19/2020 के रूप में मौजूद है। यह समाधान वर्तमान में काम नहीं करता है।
मेग

1
@ यकीन नहीं है कि आप अभी भी एक समाधान की तलाश कर रहे हैं, लेकिन मैं यहाँ ggExtra लाइब्रेरी से हटाने के लिए आया हूँ: rdrr.io removeGrid , जो अक्ष लेबल को बनाए रखते हुए ग्रिड लाइनों को हटा देता है।
SHKT

4

यह आपको केवल डेटा बिंदुओं के साथ छोड़ देता है:

ggplot(out, aes(X1, X2)) + 
    geom_point() + 
    scale_x_continuous(breaks = NULL) + 
    scale_y_continuous(breaks = NULL) + 
    opts(panel.background = theme_blank()) + 
    opts(axis.title.x = theme_blank(), axis.title.y = theme_blank())

शायद इसे अपडेट करने की जरूरत है। जब मैं इसे चलाता हूं, तो मुझे निम्न त्रुटि मिलती है: ओपेट्स में त्रुटि (पैनल.बैकग्राउंड = थीम_ब्लांक ()): फ़ंक्शन "ओप्स" नहीं मिल सका ध्यान दें यह उत्तर भी ओपी के प्रतिलिपि प्रस्तुत करने योग्य उत्तर का पालन नहीं करता है, जो "डेटा" का उपयोग करता है (नहीं) "आउट"), और "x" और "y," न कि "X1" और "X2।"
मेग

1

संबंधित धागे से मेरे उत्तर की प्रतिलिपि बनाते हुए,

2020 तक इसे देखने वाले लोगों के लिए, मैंने gGExtra लाइब्रेरी से rGrr.io> removeGrid के रिमूवल के रूप में एक समाधान पाया है।

मैंने इसे ggplot2 संस्करण 3.3.0 और ggExtra संस्करण 0.9 के साथ काम करने के लिए परीक्षण किया है, मुझे ग्रिडलाइंस के बिना अक्ष टिक देता है।


1

विकल्प 1:

data_df <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))

ggplot(data_df, aes(x, y)) +
  geom_bar(stat = 'identity') +
  theme(panel.background = element_rect(fill = "white"))

विकल्प 2:

data_df <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))
    
ggplot(data_df, aes(x, y)) +
      geom_bar(stat = 'identity') +
      theme(
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank()
      )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.