2013-01-24 16 views
10

मैं ggplot और geom_errorbar का उपयोग कर एक पहलू प्लॉट बनाने की कोशिश कर रहा हूं। हालांकि, प्रत्येक अलग-अलग पहलू में बहुत अलग x श्रेणियां हो सकती हैं, और इसलिए त्रुटि पट्टी की चौड़ाई "अच्छा" नहीं दिख रही है। यहाँ एक मेगावाट है:ggplot geom_errorbar चौड़ाई जब पहलू (और स्केल = "मुक्त")

library(ggplot2) 
test <- data.frame(group=rep(c(1,2,3),each=10), ymin=rnorm(30), ymax=rnorm(30)) 
test$x <- rnorm(30) * (1+(test$group==1)*20) 
ggplot(test, aes(x=x, ymin=ymin, ymax=ymax)) + 
    geom_errorbar(width=5) + facet_wrap(~ group, scale="free_x") 
ggplot(test, aes(x=x, ymin=ymin, ymax=ymax)) + 
    geom_errorbar(width=.2) + facet_wrap(~ group, scale="free_x") 

पहले साजिश में, समूह 1 के लिए त्रुटि सलाखों बहुत अच्छी लग रही है, लेकिन 2 और 3 अभी तक बहुत विस्तृत है। दूसरी साजिश में, त्रुटि बार समूह 1 के लिए बहुत छोटा रास्ता है। क्या इसे ठीक करने का कोई आसान तरीका है? मुझे लगता है कि मुझे सिर्फ चौड़ाई = 0 का उपयोग करना पड़ सकता है, लेकिन मैं इससे बचना चाहता हूं।

First Plot

इस समस्या के लिए

Second Plot

उत्तर

11

वर्कअराउंड अपने डेटा फ्रेम नया स्तंभ wd कि प्रत्येक स्तर के लिए errorbars की चौड़ाई में शामिल है में जोड़ने के लिए किया जाएगा।

test <- data.frame(group=rep(c(1,2,3),each=10), ymin=rnorm(30), ymax=rnorm(30)) 
test$x <- rnorm(30) * (1+(test$group==1)*20) 
test$wd<-rep(c(10,0.5,0.5),each=10) 

फिर geom_errorbar() में width= स्थापित करने के लिए इस नए कॉलम का उपयोग करें। इसे aes() कॉल के अंदर सेट किया जाना चाहिए।

ggplot(test, aes(x=x, ymin=ymin, ymax=ymax)) + 
    geom_errorbar(aes(width=wd)) + facet_wrap(~ group, scale="free_x") 

enter image description here