2014-11-22 5 views
81

इस डेटा फ्रेम ("df") के साथ:ggplot2 लाइन चार्ट "geom_path देता है: प्रत्येक समूह में केवल एक अवलोकन होता है। क्या आपको समूह सौंदर्य को समायोजित करने की आवश्यकता है?"

plot5 <- ggplot(df, aes(year, pollution)) + 
      geom_point() + 
      geom_line() + 
      labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore") 

त्रुटि मैं मिलता है:

geom_path

year pollution 
1 1999 346.82000 
2 2002 134.30882 
3 2005 130.43038 
4 2008 88.27546 

मैं इस तरह एक लाइन चार्ट बनाने का प्रयास करें: प्रत्येक समूह में केवल एक अवलोकन होता है। क्या आपको समूह सौंदर्य को समायोजित करने की आवश्यकता है?

चार्ट एक स्कैटर प्लॉट के रूप में दिखाई देता है, भले ही मैं एक रेखा चार्ट चाहता हूं। मैंने को geom_line(aes(group = year)) के साथ बदलने की कोशिश की लेकिन यह काम नहीं किया।

एक उत्तर में मुझे वर्ष को एक कारक परिवर्तनीय रूपांतरित करने के लिए कहा गया था। मैंने किया और समस्या बनी हुई है।

'data.frame': 4 obs. of 2 variables: 
$ year  : num 1 2 3 4 
$ pollution: num [1:4(1d)] 346.8 134.3 130.4 88.3 
    ..- attr(*, "dimnames")=List of 1 
    .. ..$ : chr "1999" "2002" "2005" "2008" 

structure(list(year = c(1, 2, 3, 4), pollution = structure(c(346.82, 
134.308821199349, 130.430379885892, 88.275457392443), .Dim = 4L, .Dimnames = list(
    c("1999", "2002", "2005", "2008")))), .Names = c("year", 
"pollution"), row.names = c(NA, -4L), class = "data.frame") 
+0

जब मैं इसे चलाने के लिए कोई त्रुटि देता है। इसकी संभावना है कि 'डीएफ' वह नहीं है जो आपको लगता है। कृपया अपने प्रश्न को पुनरुत्पादित रूप में बताएं, यानी 'dput (df)' के आउटपुट दिखाएं। –

+0

यह हो सकता है कि आपके चर कारक हैं, फिर आपको उन्हें संख्यात्मक – beetroot

+0

@ G.Grothendieck में परिवर्तित करने की आवश्यकता होगी, मैंने जो कहा है उसे पोस्ट किया है। मैं संख्यात्मक में भी परिवर्तित हो गया और अभी भी समस्या है। – megashigger

उत्तर

168

आप केवल ggplot या geom_line एईएस में group = 1 जोड़ने के लिए() ।

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

संदर्भ: आर के लिए कुकबुक, अध्याय: ग्राफ बार_and_line_graphs_ (ggplot2), रेखा ग्राफ।

इस प्रयास करें:

plot5 <- ggplot(df, aes(year, pollution, group = 1)) + 
     geom_point() + 
     geom_line() + 
     labs(x = "Year", y = "Particulate matter emissions (tons)", 
       title = "Motor vehicle emissions in Baltimore") 
+0

समूह = 1 निर्दिष्ट चेतावनी के लिए काम करता है। – Turcia

12

आप अपने चर का एक वास्तव में एक कारक चर है क्योंकि इस त्रुटि मिलती है: यह str(df) और dput(df) का उत्पादन होता है।

str(df) 

इस जांच करने के लिए निष्पादित करें।

df$year <- as.numeric(as.character(df$year)) 

संपादित करें: तो बजाय "1,2,3,4" स्तर संख्या में बदलने के वर्ष संख्या रखने के लिए इस डबल चर परिवर्तन कर ऐसा लगता है अपने data.frame वर्ग के एक चर है कि " सरणी "जो पीबी का कारण बन सकता है। तो प्रयास करें:

df <- data.frame(apply(df, 2, unclass)) 

और plto

+0

मैंने रूपांतरण किया और यह अभी भी काम नहीं करता है। – megashigger

+2

यह मेरे लिए एक सुविधाजनक उत्तर है क्योंकि यह रूट –

1
अप आर एक ताजा सत्र में प्रारंभ करें और इस पेस्ट

:

library(ggplot2) 

df <- structure(list(year = c(1, 2, 3, 4), pollution = structure(c(346.82, 
134.308821199349, 130.430379885892, 88.275457392443), .Dim = 4L, .Dimnames = list(
    c("1999", "2002", "2005", "2008")))), .Names = c("year", 
"pollution"), row.names = c(NA, -4L), class = "data.frame") 

df[] <- lapply(df, as.numeric) # make all columns numeric 

ggplot(df, aes(year, pollution)) + 
      geom_point() + 
      geom_line() + 
      labs(x = "Year", 
       y = "Particulate matter emissions (tons)", 
       title = "Motor vehicle emissions in Baltimore") 
+0

से समस्या को ठीक करता है मुझे अभी भी त्रुटि मिलती है। – megashigger

+0

आर को एक नए सत्र में शुरू करें और कोड को मेरे पोस्ट में पेस्ट करें। –

+0

क्या आपने इस समस्या का पता लगाया है। मुझे आपके लिए एक ही समस्या है जो मेरे पास प्रत्येक एक्स मान के लिए केवल एक मान है। तुम्हारे जवाब के लिए इन्तेजार कर रहा हूँ। धन्यवाद। –

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