Ggplot2 থেকে "শ্রেণীর অব্যবস্থার ডেটা" ত্রুটি মোকাবেলা করতে কীভাবে?


101

একটি বিদ্যমান জিজিপ্লাটে নতুন লাইনটি ওভারলে করার চেষ্টা করার সময় আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি:

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
ওচ যে একরকম বিব্রতকর !! তবে আমি আর কখনও ভুল করব না। ধন্যবাদ জাস্টিন
মাইকটিপি

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

আপনি যদি ডেটা.ফ্রেমে বিদ্যমান না যে কোনও ভেরিয়েবলের উল্লেখ করেন তবে এটিও ঘটতে পারে। উদাহরণস্বরূপ, সম্প্রতি আমি আমার কোনও ভেরিয়েবলের সংক্ষিপ্ত বিবরণটি ddply বলতে ভুলে গেছি যা আমি রেখার রঙ নির্দিষ্ট করতে জিওম_লাইনে ব্যবহার করেছি। তারপরে, ggplot জানেন না যে সংক্ষিপ্ত সারণীতে আমি যে পরিবর্তনশীলটি তৈরি করেছিলাম তা কোথায় পাব এবং আমি এই ত্রুটি পেয়েছি।


6
আপনি + দিয়ে জিপিপ্লট পাইপ করতে ভুলে গেলে এই ত্রুটিটিও ঘটতে পারে। আমি দুর্ঘটনাক্রমে dplyr এর%>% অপারেটর ব্যবহার করেছি এবং প্লটটি সম্পূর্ণ করার জন্য ggplot এর প্রয়োজনীয় লাইনগুলি পাই নি।
ড্যান জারেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.