2012-07-27 31 views
6

के साथ विभिन्न डेटासेट्स के आधार पर दो किंवदंतियों ggplot2 के साथ दो किंवदंतियों के साथ संभव है लेकिन विभिन्न डेटासेट पर आधारित है? उदाहरण के लिए, नीचे दिए गए कोड में मैं पहली स्थिति की किंवदंती और उसी ग्राफिक में दूसरी स्थिति की किंवदंती दोनों प्राप्त करना चाहता हूं। मेरा प्रयास (तीसरी स्थिति) काम नहीं करता है।ggplot2

library(ggplot2) 
library(scales) 

yrng <- range(economics$unemploy) 
xrng <- range(economics$date) 
presidential <- presidential[-(1:3), ] 

# add a fictive factor to the economics dataset 
economics <- cbind.data.frame(economics, col=gl(2, nrow(economics)/2)) 

##################### 
## first situation ## 
##################### 
# first plot with legend 
unemp <- qplot(date, unemploy, data=economics, geom="line", 
       xlab = "", ylab = "No. unemployed (1000s)", colour=col) 
# second plot without legend 
unemp + geom_vline(aes(xintercept = start), data = presidential) 

###################### 
## second situation ## 
###################### 
# first plot without legend 
unemp <- qplot(date, unemploy, data=economics, geom="line", 
       xlab = "", ylab = "No. unemployed (1000s)") 
# second plot with legend 
unemp + 
    geom_rect(aes(NULL, NULL, xmin = start, xmax = end, 
        fill = party), ymin = yrng[1], ymax = yrng[2], 
        data = presidential) + 
    scale_fill_manual(values = alpha(c("blue", "red"), 0.2)) 


##################### 
## third situation ## 
##################### 
# first plot with legend 
unemp <- qplot(date, unemploy, data=economics, geom="line", 
       xlab = "", ylab = "No. unemployed (1000s)", colour=col) 
# second plot with legend 
unemp + 
    geom_rect(aes(NULL, NULL, xmin = start, xmax = end, fill = party), ymin = yrng[1], 
       ymax = yrng[2], data = presidential) + 
    scale_fill_manual(values = alpha(c("blue", "red"), 0.2)) 

Error in data.frame(xmin = 11342, xmax = 14264, fill = "Republican", colour = function (x, : 
    arguments imply differing number of rows: 1, 0 
+1

आपका कोड आदर्श कटौती और आर में चिपकाने के लिए आसान होना चाहिए मैं यह आसान है कि कैसे मैं साजिश टुकड़ा द्वारा टुकड़ा का निर्माण कर रहा हूँ के बारे में सोचने के लिए मिल जैसा कि वर्तमान में आपके पास '>' और '+' वर्ण हैं जो इसे संभव नहीं बनाते हैं। परिणामस्वरूप आप क्या कर रहे हैं यह देखना मुश्किल है। –

+0

@ mindless.panda यह कोई समस्या नहीं है: कोड कॉपी करें और फिर आर कंसोल में "केवल पेस्ट कमांड करें" करें :-) –

+0

आप मानते हैं कि हर कोई मानक आर कंसोल का उपयोग करता है। =) –

उत्तर

13

सामान्य तौर पर, एक बार मैं और अधिक जटिल भूखंडों के लिए हो रही शुरू करते हैं, इसकी लगभग हमेशा बेहतर qplot का उपयोग बंद और बदले ggplot उपयोग करने के लिए।

ggplot() + 
    geom_line(aes(x=date, y=unemploy, color=col), data=economics) + 
    geom_rect(aes(xmin=start, xmax=end, fill=party), 
      ymin = yrng[1], ymax = yrng[2], data = presidential) + 
    scale_fill_manual(values = alpha(c("blue", "red"), 0.2)) +   
    xlab("") + 
    ylab("No. unemployed (1000s)") 

यह देता है::

plot

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