Ggplot2 से "क्लास यूडेवल के डेटा" त्रुटि से कैसे निपटें?


101

मौजूदा ggplot में एक नई पंक्ति को ओवरले करने की कोशिश करते समय मुझे निम्नलिखित त्रुटि मिल रही है:

Error: ggplot2 doesn't know how to deal with data of class uneval

मेरे कोड का पहला भाग ठीक काम करता है। नीचे एक मिडवेस्टर्न यूनाइटेड स्टेट्स इलेक्ट्रिक पावर मार्केट से "हाल ही में" प्रति घंटा पवन उत्पादन डेटा की एक छवि है।

हाल ही में प्रति घंटा पवन डेटा

अब मैं रेड में पिछले दो दिनों की टिप्पणियों को देखना चाहता हूं। यह आसान होना चाहिए लेकिन मुझे यह पता लगाना चाहिए कि मुझे त्रुटि क्यों हो रही है।

किसी भी सहायता की काफी सराहना की जाएगी।

नीचे एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है:

# Read in Wind data
fname <- "https://www.midwestiso.org/Library/Repository/Market%20Reports/20130510_hwd_HIST.csv"
df <- read.csv(fname, header=TRUE, sep="," , skip=7)
df <- df[1:(length(df$MKTHOUR)-5),]

# format variables
df$MWh <- as.numeric(df$MWh)
df$Datetime <- strptime(df$MKTHOUR, "%m/%d/%y %I:%M %p")

# Create some variables
df$Date  <- as.Date(df$Datetime)
df$HrEnd <- df$Datetime$hour+1

# Subset recent and last data
last.obs  <- range(df$Date)[2]
df.recent <- subset(df, Date %in% seq(last.obs-30, last.obs-2, by=1))
df.last   <- subset(df, Date %in% seq(last.obs-2,  last.obs,   by=1))

# plot recent in Grey
p <- ggplot(df.recent, aes(HrEnd, MWh, group=factor(Date))) + 
  geom_line(color="grey") +
  scale_y_continuous(labels = comma) + 
  scale_x_continuous(breaks = seq(1,24,1)) +
  labs(y="MWh") + 
  labs(x="Hour Ending") + 
  labs(title="Hourly Wind Generation")    
p

# plot last two days in Red
p <- p + geom_line(df.last, aes(HrEnd, MWh, group=factor(Date)), color="red")  
p

जवाबों:


165

जब आप किसी नए डेटा को जियोम में सेट करते हैं तो आपको data=तर्क का उपयोग करने की आवश्यकता होती है। या तर्कों को उचित क्रम में रखें mapping=..., data=...। के लिए तर्कों पर एक नज़र डालें ?geom_line

इस प्रकार:

p + geom_line(data=df.last, aes(HrEnd, MWh, group=factor(Date)), color="red") 

या:

p + geom_line(aes(HrEnd, MWh, group=factor(Date)), df.last, color="red") 

1
ouch कि तरह तरह के शर्मनाक !! लेकिन मैं कभी भी फिर से गलती नहीं करेगा। धन्यवाद जस्टिन
माइकेट

36
नहीं यह नहीं! और हाँ आप करेंगे! खुशी है कि मैं आपको सही दिशा में आगे बढ़ा सकता हूं और अब यहां पोस्टीरिटी के लिए।
जस्टिन

13

एक और कारण गलती से बाहर data=...के aes(...)बजाय अंदर डाल रहा है :

RIGHT:
ggplot(data=df[df$var7=='9-06',], aes(x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)

WRONG:
ggplot(aes(data=df[df$var7=='9-06',],x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)

विशेष रूप से यह तब हो सकता है जब आप अपने प्लॉट कमांड के साथ प्रोटोटाइप करते हैं qplot(), जो स्पष्ट रूप से उपयोग नहीं करता है aes(), तो इसे संपादित / कॉपी-पेस्ट करेंggplot()

qplot(data=..., x=...,y=..., ...)

ggplot(data=..., aes(x=...,y=...,...))

यह एक दुखद है ggplot का त्रुटि संदेश 'डेटा' तर्क गुम नहीं है! इस गुप्त बकवास के बजाय, क्योंकि यही इस संदेश का अक्सर अर्थ है।


4

यदि आप डेटा में मौजूद वैरिएबल का संदर्भ लेते हैं, तो यह मौजूद नहीं है। उदाहरण के लिए, हाल ही में मैं अपने एक चर द्वारा संक्षेप में बताना भूल गया था कि मैंने लाइन रंग निर्दिष्ट करने के लिए geom_line में उपयोग किया था। फिर, ggplot को यह नहीं पता था कि सारांश तालिका में मेरे द्वारा बनाए गए चर को खोजने के लिए कहां है, और मुझे यह त्रुटि मिली।


6
यह त्रुटि तब भी हो सकती है यदि आप ggplot को + के साथ पाइप करना भूल जाते हैं। मैंने गलती से dplyr के%>% ऑपरेटर का उपयोग किया और ggplot को वह भूखंड नहीं मिला जिसकी उसे साजिश को पूरा करने की आवश्यकता थी।
Dan Jarratt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.