2015-02-24 5 views
5

क्या ggplot2 के geom_density() फ़ंक्शन को ggvis के layer_densities() के व्यवहार की नकल करने का कोई तरीका है? यही है, इसे p1 पर कॉल किए बिना p3 (नीचे देखें) जैसा दिखता है? विशेष रूप से, मैं उस दृश्य को पसंद करता हूं जो घनत्व वक्र की पूंछ को सुचारू बनाता है।ggspot2 geom_density() व्यवहार की नकल करने के लिए ggplot2 geom_density() में x सीमा xlim() को समायोजित करना

library(ggvis) 
library(ggplot2) 

faithful %>% 
    ggvis(~waiting) %>% 
    layer_densities(fill := "green") -> p1 

ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) -> p2 

ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) + 
    xlim(c(30, 110)) -> p3 

p1 
p2 
p3 

ggvis आउटपुट: p1

ggplot2 "डिफ़ॉल्ट": p2

ggplot2 "वांछित": p3

नोट: एक ggvis निम्नलिखित के माध्यम से ggplot2 की नकल कर सकते हैं (trim=TRUE का उपयोग करके), लेकिन मैं दूसरी दिशा जाना चाहूंगा ...

faithful %>% 
    compute_density(~waiting, trim=TRUE) %>% 
    ggvis(~pred_, ~resp_) %>% 
    layer_lines() 
+0

क्यों xlim तर्क से परहेज करते हैं? क्या आपकी चिंता है कि समाधान सामान्य नहीं होगा? –

+0

@ RomanLuštrik सही - मैं एक और सामान्य समाधान की तलाश में हूं। – JasonAizkalns

उत्तर

6

xlim पर कॉल करने के बारे में, लेकिन प्रोग्रामेटिक रूप से परिभाषित सीमाओं के साथ कैसे?

l <- density(faithful$waiting) 
ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) + 
    xlim(range(l$x)) 

enter image description here

नकारात्मक पक्ष यह है हालांकि डबल घनत्व आकलन है, इसलिए रखें कि मन में।

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