2014-10-14 7 views
12

मैंने ggplot2 का उपयोग करके एक बारप्लॉट बनाया है और जर्नल I को सबमिट करने की आवश्यकता है जिसके लिए अक्ष टिक्स अंदर आती है।मैं अपने अक्ष टिक्स को चेहरे में कैसे बना सकता हूं ggplot2

यह मेरा डेटा के पाठ प्रतिनिधित्व (dput) मानक त्रुटि सहित

Mean.Inc.melt<-structure(list(Var1 = structure(c(1L, 2L, 1L, 2L, 1L, 2L), .Label = c("Harvest","Pre-Harvest"), class = "factor"), Var2 = structure(c(1L, 1L, 2L, 2L, 3L, 3L), .Label =c("Dip A", "Trip A", "Trip B"), class = "factor"), value = c(2, 34, 1, 36, 3, 46)), .Names =c("Var1", "Var2", "value"), row.names = c(NA, -6L), class = "data.frame") 

है

SEM.Inc.melt<-structure(list(Var1 = structure(c(1L, 2L, 1L, 2L, 1L, 2L), .Label = c("Harvest", "Pre-Harvest"), class = "factor"), Var2 = structure(c(1L, 1L, 2L, 2L, 3L, 3L), .Label = c("Dip A", "Trip A", "Trip B"), class = "factor"), value = c(1, 12, 1, 2, 1, 6)), .Names = c("Var1", "Var2", "value"), row.names = c(NA, -6L), class = "data.frame") 

यह स्क्रिप्ट मैं अब तक भूखंड बनाने के लिए इस्तेमाल किया है:

ggplot(Mean.Inc.melt,aes(x=Var2,y=value,fill=Var1))+ 
    geom_bar(stat='identity',position=position_dodge(),colour='black')+ 
    scale_fill_manual(values=c('#000000','#FFFFFF'))+ 
    geom_errorbar(aes(ymin=Mean.Inc.melt$value-SEM.Inc.melt$value, 
        ymax=Mean.Inc.melt$value+SEM.Inc.melt$value),width=.1, 
        position=position_dodge(.9))+ 
    xlab('Treatment')+ 
    ylab('Percentage Incidence (%)')+ 
    ylim(0,60)+ 
    scale_y_continuous(expand=c(0,0),limits=c(0,60))+ 
    scale_x_discrete(expand=c(0,0))+ 
    theme_bw()+ 
    theme(axis.line=element_line(colour='black'),panel.grid.major=element_blank(), 
     panel.grid.minor=element_blank(),panel.border=element_blank(), 
     panel.background=element_blank())+ 
    geom_vline(xintercept=0)+theme(legend.position='none') 

मुझे लगता है कि बिंदु है - क्या किसी को पता है कि क्या कोई तरीका है कि मैं अपनी धुरी को अंदर से सामना कर सकता हूं?

उत्तर

10

जबकि मुझे अंदरूनी टिक टिकने की जर्नल की इच्छा को समझ में नहीं आता है, यह ggplot के साथ इसे प्राप्त करने के लिए काफी सरल है।

axis.ticks.lengththeme पर तर्क आपको टिक अंकों की लंबाई निर्धारित करने की अनुमति देता है। यदि यह ऋणात्मक मूल्य पर सेट है, तो टिक अंक अंदर प्लॉट किए जाएंगे। उदाहरण के लिए (डेनिस मर्फी here द्वारा एक समाधान reposting):

library(ggplot2) 
library(grid) 
ggplot(mtcars, aes(disp, mpg)) + geom_point() + 
    theme(axis.ticks.length=unit(-0.25, "cm"), axis.ticks.margin=unit(0.5, "cm")) 

enter image description here

के उदाहरण में दिखाया ऊपर, आप axis.ticks.margin साथ साथ ही टिक लेबल की स्थिति को समायोजित करने, जरूरत है।

ध्यान दें कि मान unit ऑब्जेक्ट के रूप में पारित किया जाना चाहिए, जिसके लिए grid पैकेज (आर के साथ पूर्व-स्थापित) लोड किया गया है।

+1

ggplot 2.0.0 में 'चेतावनी संदेश:' axis.ticks.margin 'को बहिष्कृत किया गया है। कृपया 'axis.text' की बजाय 'मार्जिन' प्रॉपर्टी सेट करें '- और ऐसा लगता है कि' axis.text = element_text (margin = 5) 'मदद नहीं करता है ... यदि समाधान गुग हो जाए तो मैं वापस पोस्ट करूंगा। – xealits

+2

तो, परीक्षण-और-प्रयास विधि के अनुसार, अब आप इसे कैसे करते हैं: 'थीम (axis.ticks.length = इकाई (-0.25," cm "), axis.text.x = element_text (margin = unit (सी (0.5,0.5,0.5,0.5), "सेमी")), axis.text.y = element_text (मार्जिन = इकाई (सी (0.5,0.5,0.5,0.5), "सेमी")) '- किसी भी तरह से यह 'axis.text' से सेटिंग का वारिस नहीं करता है, और मार्जिन के लिए त्रुटि संदेशों को लंबाई के वेक्टर होने के लिए संकेत मिलता है 4. – xealits

+0

@xealits - सुधार पोस्ट करने के लिए धन्यवाद। – jbaums

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