2013-01-23 14 views
20

नीचे एक साजिश का उदाहरण कोड है जो लगभग वही करता है जो मैं चाहता हूं। एकमात्र चीज जो मैं जोड़ना चाहता हूं वह नीचे वर्णित मामूली_ब्रेक्स के अनुसार एक्स अक्ष (प्रमुख आकार के समान आकार) पर टिक अंक है।ggplot2 (कोई लेबल के साथ) x अक्ष में मामूली टिक अंक जोड़ना

df <- data.frame(x = c(1900,1950,2000), y = c(50,75,60)) 

p <- ggplot(df, aes(x=x, y=y)) 
    p + geom_line() + 
    scale_x_continuous(minor_breaks = seq(1900,2000,by=10), breaks = seq(1900,2000,by=50), limits = c(1900,2000), expand = c(0,0)) + 
    scale_y_continuous(breaks = c(20,40,60,80), limits = c(0,100)) + 
    theme(legend.position="none", panel.background = element_blank(), 
    axis.line = element_line(color='black'), panel.grid.minor = element_blank()) 

अग्रिम धन्यवाद, --JT

+7

मैं इस अनुरोध कई बार देखा है और एक अच्छा जवाब नहीं देखा है। मैंने देखा/उपयोग किया विकल्प 1: मामूली ग्रिड लाइनों का उपयोग करें। 2: मैन्युअल रूप से टिक अंक जोड़ें .. (कुछ हद तक एक दर्दनाक दृष्टिकोण है, लेकिन मैं भविष्य में कार्य/पैकेज की कल्पना कर सकता हूं जो यह कर सकता है।) – N8TRO

+0

निर्बाध आत्म-प्रचार: इसे देखें [उत्तर] (http://stackoverflow.com/ ए/34533473/2726564) – manimal

उत्तर

18

यह सटीक उदाहरण में यह करना होगा:

scale_x_continuous(breaks= seq(1900,2000,by=10), 
        labels = c(1900, rep("",4), 1950, rep("",4), 2000), 
        limits = c(1900,2000), expand = c(0,0)) + 

यहाँ एक समारोह है कि बुलेट प्रूफ नहीं है, लेकिन खाली लेबल सम्मिलित करने के लिए काम करता है जब शुरुआत और समापन प्रमुख लेबल at तर्क के लिए प्रारंभ और रोक मूल्यों के साथ गठबंधन होते हैं:

insert_minor <- function(major_labs, n_minor) {labs <- 
           c(sapply(major_labs, function(x) c(x, rep("", 4)))) 
           labs[1:(length(labs)-n_minor)]} 

टेस्ट:

p <- ggplot(df, aes(x=x, y=y)) 
    p + geom_line() + 
    scale_x_continuous(breaks= seq(1900,2000,by=10), 
        labels = insert_minor(seq(1900, 2000, by=50), 4), 
        limits = c(1900,2000), expand = c(0,0)) + 
    scale_y_continuous(breaks = c(20,40,60,80), limits = c(0,100)) + 
    theme(legend.position="none", panel.background = element_blank(), 
     axis.line = element_line(color='black'), panel.grid.minor = element_blank()) 
+0

धन्यवाद डीडब्ल्यूएन। यह मैं जो कर रहा हूं उसके लिए काम करेगा। उन्हें प्रभावी रूप से खाली लेबल के साथ सभी प्रमुख टिक अंक बनाने के बारे में भी नहीं सोचा था। – JimmyT

+2

मुझे लगता है कि वास्तव में क्या आवश्यक है एक ऐसा फ़ंक्शन है जो अनुक्रम में रिक्त स्थान डालेगा। एक अच्छा अनुवर्ती प्रश्न हो सकता है। –

+1

पुन: अनुक्रम में रिक्त स्थान डालना: [यहां] [http://stackoverflow.com/questions/34533472/insert-blanks-into-a-vector-for-eg-minor-tick-labels-in-r) मेरा – manimal

संबंधित मुद्दे