ggplot2 লাইন চার্টটি "জিওম_পথ: প্রতিটি গ্রুপে একটি মাত্র পর্যবেক্ষণ নিয়ে গঠিত। আপনার কি গ্রুপ নান্দনিক সমন্বয় করা প্রয়োজন? "


170

এই ডেটা ফ্রেমের সাথে ("ডিএফ"):

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

আমি এটির মতো একটি লাইন চার্ট তৈরি করার চেষ্টা করি:

  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_line()সঙ্গে geom_line(aes(group = year))কিন্তু যে কাজ করে নি।

উত্তরে আমাকে বলা হয়েছিল বছরকে একটি ফ্যাক্টর ভেরিয়েবলে রূপান্তর করতে। আমি করেছি এবং সমস্যা অব্যাহত আছে। এটি এর ফলাফল str(df)এবং dput(df):

'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")

এটি চালানোর সময় এটি কোনও ত্রুটি দেয় না। এটি সম্ভবত dfআপনি যা ভাবেন তা নয়। আপনার প্রশ্নটিকে পুনরুত্পাদনযোগ্য আকারে বলুন, অর্থাত্ আউটপুট প্রদর্শন করুন dput(df)
জি গ্রোথেন্ডিক

আপনার ভেরিয়েবলগুলি ফ্যাক্টর হতে পারে তবে আপনার সেগুলি সংখ্যায় রূপান্তর করতে হবে
বীট্রুট

@ জি.গ্রোথেন্ডিক আপনি যা বলেছিলেন তা আমি পোস্ট করেছি। আমি সংখ্যায় রূপান্তর করেছি এবং এখনও সমস্যা আছে।
মেগাশিগার

আপনার সত্যই পুনরুত্পাদনযোগ্য আকারে প্রশ্নগুলি করা উচিত। আমরা ত্রুটিটি পুনরায় তৈরি করতে না পারলে আপনাকে সাহায্য করা শক্ত।
মারিও বেরেরেরা

উত্তর:


344

আপনাকে কেবল group = 1ggplot বা geom_line aes () এ যুক্ত করতে হবে।

লাইন গ্রাফের জন্য, ডেটা পয়েন্টগুলি অবশ্যই গোষ্ঠীভুক্ত করা উচিত যাতে এটি জানে যে কোন পয়েন্টগুলি সংযুক্ত করতে হবে। এই ক্ষেত্রে, এটি সহজ - সমস্ত পয়েন্ট সংযুক্ত হওয়া উচিত, সুতরাং গ্রুপ = 1। যখন আরও ভেরিয়েবল ব্যবহার করা হয় এবং একাধিক লাইন আঁকানো হয়, লাইনের জন্য গ্রুপিং সাধারণত ভেরিয়েবল দ্বারা করা হয়।

তথ্যসূত্র: আর এর জন্য কুকবুক, অধ্যায়: গ্রাফগুলি বার_এন্ড_লাইন_গ্রাফিক্স_ (জিজিপ্লট 2), লাইন গ্রাফ।

এটা চেষ্টা কর:

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")

লক্ষণীয়, দলবদ্ধকরণ groupযুক্তি দিয়ে করা উচিত । কেবল উদাহরণস্বরূপ গোষ্ঠীবদ্ধকরণ colorপর্যাপ্ত হবে না
I আমার

এই উত্তর এখনও বৈধ? নান্দনিকতায় গ্রুপ = 1 যুক্ত করা এখন আর কাজ করছে বলে মনে হয় না।
গিয়াকোমো

@ গিয়াকোমো - ম্যাকের জন্য আমার পক্ষে 3.6.2 এ কাজ করে। ভয়ঙ্কর সতর্কতা পাচ্ছিল, তবে গ্রুপ = 1 যুক্ত করা সমস্যার সমাধান করেছে। ggplot (লেকমেটা, ম্যাপিং = এসস (x = লেক, y = ক্ষেত্র, গোষ্ঠী = 1)) + ভূত_রেখা (আকার = 2, রঙ = "নীল")
জেন ডি ডি

27

আপনি এই ত্রুটিটি পান কারণ আপনার ভেরিয়েবলগুলির মধ্যে একটি আসলে একটি ফ্যাক্টর ভেরিয়েবল। এক্সিকিউট

str(df) 

এটি পরীক্ষা করতে। তারপরে বছরের সংখ্যাগুলি "1,2,3,4" স্তর সংখ্যার পরিবর্তে পরিবর্তনের জন্য এই দ্বিগুণ পরিবর্তনশীল পরিবর্তনটি করুন:

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

সম্পাদনা: এটি প্রদর্শিত হয় যে আপনার ডেটা.ফ্রেমে ক্লাস "অ্যারে" এর একটি পরিবর্তনশীল রয়েছে যা পিবি হতে পারে। তারপরে চেষ্টা করুন:

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

এবং আবার চক্রান্ত?


3
এটি আমার জন্য একটি সুবিধাজনক উত্তর কারণ এটি সমস্যাটি মূল থেকে সমাধান করে
মেধাত

1
এই সতর্কতা প্রতিরোধের জন্য ভাল উত্তর!
মিহাই

2

ডেটা ফ্রেমের সাথে আমারও একই সমস্যা ছিল:

group time weight.loss
1 Control  wl1    4.500000
2    Diet  wl1    5.333333
3  DietEx  wl1    6.200000
4 Control  wl2    3.333333
5    Diet  wl2    3.916667
6  DietEx  wl2    6.100000
7 Control  wl3    2.083333
8    Diet  wl3    2.250000
9  DietEx  wl3    2.200000

আমি মনে করি এক্স অক্ষের জন্য পরিবর্তনশীলটি সংখ্যাযুক্ত হওয়া উচিত, যাতে ভূত_লাইনটি কীভাবে লাইন আঁকতে পয়েন্টগুলি সংযুক্ত করতে হয় তা জানে।

আমি দ্বিতীয় কলামটি সংখ্যাতে পরিবর্তন করার পরে:

 group time weight.loss
1 Control    1    4.500000
2    Diet    1    5.333333
3  DietEx    1    6.200000
4 Control    2    3.333333
5    Diet    2    3.916667
6  DietEx    2    6.100000
7 Control    3    2.083333
8    Diet    3    2.250000
9  DietEx    3    2.200000

তারপর এটি কাজ করে।


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

আমি একটি অনুরূপ প্রম্পট পেয়েছি। এটি ছিল কারণ আমি কিছু শতাংশের ক্ষেত্রে x- অক্ষ নির্দিষ্ট করেছিলাম (উদাহরণস্বরূপ: 10% এ, 20% বি, ....)। সুতরাং একটি বিকল্প পন্থা হতে পারে যে আপনি এই মানগুলি গুন করেন এবং এগুলি সহজ আকারে লেখেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.