2012-12-31 18 views
6

मैं एक साजिश में दो गाइडों के बीच अंतर को कैसे कम कर सकता हूं। नीचे दिए गए उदाहरण में, दो गाइड रंग और आकार के पैमाने से हैं और मैं दोनों के बीच का अंतर बदलना चाहता हूं ताकि शीर्षक 'आकार' 1 के लिए किंवदंती बिंदु से नीचे हो। डिजाइन-वार, यह संभव नहीं हो सकता है इस उदाहरण में समझ में है लेकिन मेरे वास्तविक आवेदन में यह करता है।एक साजिश में दो किंवदंतियों के बीच छोटे अंतर (जैसे रंग और आकार स्केल)

df=data.frame(x=rnorm(100),y=rnorm(100),color=factor(rbinom(100,1,0.5)),size=runif(100)) 
ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point() 

संपादित करें: यहां साजिश है। मैं हरे रंग की रेखा और तीर को छोटा करके हाइलाइट करना चाहता हूं।

enter image description here

+0

तुम दोनों जाली और ggplot शब्दावली में क्या कहा जाता है के बारे में 'मापता है' बात कर रहे हैं, या अपने 'किंवदंतियों' की बात कर रहे? –

+0

मैं बाएं पीएफ पर किंवदंतियों के बारे में बात कर रहा हूं, उदाहरण प्लॉट में 'रंग' और 'आकार' नामक साजिश। मैं एक साथ दो करीब जाना चाहता हूँ। – user2503795

+0

आप समस्या को बेहतर परिभाषित करते हैं, लेकिन संभव डुप्लिकेट? :/http://stackoverflow.com/questions/11366964/is-there-a-way-to-change-the-spacing-between-legend-items-in-ggplot2 –

उत्तर

5

मैं legend या guide मापदंडों अनुकूलित करने के लिए खेलने के लिए करने की कोशिश की, लेकिन मैं एक समाधान नहीं मिल रहा। मुझे आशा है कि ggplot2 सेटिंग्स का उपयोग कर समाधान दें।

यहां 2 समाधान gtable और grid पैकेज पर आधारित हैं।

gtable समाधान के लिए, कोड इस question से प्रेरित है।

enter image description here

library(gtable) 
    # Data transformation 
    data <- ggplot_build(p) 
    gtable <- ggplot_gtable(data) 
    # Determining index of legends table 
    lbox <- which(sapply(gtable$grobs, paste) == "gtable[guide-box]") 
    # changing the space between the 2 legends: here -0.5 lines 
    guide <- gtable$grobs[[lbox]] 
    gtable$grobs[[lbox]]$heights <- unit.c(guide$heights[1:2], 
            unit(-.5,'lines'), ## you can the GAP here 
            guide$heights[4:5]) 
    # Plotting 
    grid.draw(gtable) 

grid पैकेज (हम कथा का व्यूपोर्ट में पुनः बनाने)

pp <- grid.get('guide',grep=T) 
depth <- downViewport(pp$wrapvp$name) 
guide <- grid.get('guide',grep=T) 
grid.rect(gp=gpar(fill='white')) 
guide$heights <- unit.c(guide$heights[1:2],unit(-0.2,'lines'),guide$heights[4],unit(0.1,'lines')) 
grid.draw(guide) 
upViewport(depth) 
+0

धन्यवाद, मुझे पता है कि। मेरा सवाल यह है कि आकार और रंग के पैमाने के साथ दो गाइड/दो किंवदंतियों को एक साथ स्थानांतरित करने का विकल्प है या नहीं। – user2503795

+0

@ user1318686 यदि आप अपना अंतिम आउटपुट दिखाने के लिए एक तस्वीर के साथ अपना जवाब जोड़ते हैं तो क्या होगा? – agstudy

+0

हो गया। मैं हरे रंग की रेखा और तीर को छोटा करके हाइलाइट करना चाहता हूं। – user2503795

8

अब यह विषय पैरामीटर्स का उपयोग संभव हो रहा है का उपयोग कर समान:

ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point() + 
theme(legend.spacing.y = unit(-0.5, "cm")) 

आप पौराणिक कथाओं के मार्जिन को कम करने का भी प्रयास कर सकते हैं रों:

legend.margin = margin(-0.5,0,0,0, unit="cm") 

या पुराने

legend.margin=unit(0, "cm") 
संबंधित मुद्दे