আর ggplot2: স্ট্যাট_কাউন্ট () অবশ্যই বার গ্রাফে অ্যায় নান্দনিক ত্রুটির সাথে ব্যবহার করা উচিত নয়


91

একটি বার গ্রাফ প্লট করার সময় আমি এই ত্রুটিটি পাচ্ছি এবং আমি এ থেকে মুক্তি পেতে সক্ষম নই, আমি কিউপি্লট এবং জিজিপ্লট উভয়ই চেষ্টা করেছি তবে এখনও একই ত্রুটি।

আমার কোডটি নিম্নলিখিত:

 library(dplyr)
 library(ggplot2)

 #Investigate data further to build a machine learning model
 data_country = data %>%
           group_by(country) %>%
           summarise(conversion_rate = mean(converted))
  #Ist method
  qplot(country, conversion_rate, data = data_country,geom = "bar", stat ="identity", fill =   country)
  #2nd method
  ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_bar()

ত্রুটি:

  stat_count() must not be used with a y aesthetic

ডেটা_কাউন্টরিতে ডেটা:

    country conversion_rate
    <fctr>           <dbl>
  1   China     0.001331558
  2 Germany     0.062428188
  3      UK     0.052612025
  4      US     0.037800687

ত্রুটিটি বার বিন্যাসে আসছে এবং বিন্দুযুক্ত চার্টে নয়।

উত্তর:


149

প্রথমে আপনার কোডটি কিছুটা বন্ধ। aes()এটি একটি যুক্তি ggplot(), আপনি ggplot(...)+ ব্যবহার করবেন নাaes(...) + layers

দ্বিতীয়ত, সহায়তা ফাইল থেকে ?geom_bar:

ডিফল্টরূপে, জিওম_বার স্ট্যাট = "কাউন্ট" ব্যবহার করে যা বারের উচ্চতার সাথে প্রতিটি গ্রুপের কেস সংখ্যার সাথে অনুপাত করে (বা যদি ওজন নান্দনিক সরবরাহ করা হয় তবে ওজনের যোগফল)। আপনি যদি বারগুলির উচ্চতা ডেটাতে মানগুলি উপস্থাপন করতে চান তবে স্ট্যাট = "পরিচয়" ব্যবহার করুন এবং y নান্দনিকতার জন্য একটি পরিবর্তনশীল মানচিত্র করুন।

আপনি দ্বিতীয় কেস চান যেখানে বারের উচ্চতা সমান conversion_rateতাই আপনি যা চান তা ...

data_country <- data.frame(country = c("China", "Germany", "UK", "US"), 
            conversion_rate = c(0.001331558,0.062428188, 0.052612025, 0.037800687))
ggplot(data_country, aes(x=country,y = conversion_rate)) +geom_bar(stat = "identity")

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


4
হ্যাঁ যা এটি ব্যাখ্যা করার জন্য ধন্যবাদ কাজ করেছে, আমি আপনার সাহায্যের প্রশংসা করতে এই বিষয়ে কিছুটা
নতুনই রয়েছি

স্পষ্টতা, aesআসলে একটি ফাংশন। যুক্তি ggplotহচ্ছে mapping। আমরা aesফাংশনটির মাধ্যমে সেই ম্যাপিং সরবরাহ করি , যাতে আপনি প্যাটার্নটি ggplot(df, aes(...))অনেকটা দেখেন । তবে প্যাটার্নের ggplot (ডেটা_ফ্রেম) + এস (এক্স = এক্স, ওয়াই = ওয়াই) খুব ভাল। সম্ভবত উন্নত পঠনযোগ্যতা বাদে, aesআলাদাভাবে কল করা প্রাক প্রস্তুতির চক্রান্তের নান্দনিকতা সংশোধন করতে ব্যবহার করা যেতে পারে: পি <- জিগপ্লাট (আইরিস) + এস (এক্স = স্পেসিস, ওয়াই = সেপাল.লেন্থ) + জিওম_পয়েন্ট (); q <- p + aes (y = Petal.Length)
teofil

7

যখন আপনি আপনার ডেটা ফ্রেমে থাকা ডেটাটিকে y মান হিসাবে ব্যবহার করতে চান, আপনাকে ম্যাপিং প্যারামিটারে স্ট্যাট = "পরিচয়" যুক্ত করতে হবে। ফাংশন জিওম_বারের ডিফল্ট y মান থাকে। উদাহরণ স্বরূপ,

ggplot(data_country)+
  geom_bar(mapping = aes(x = country, y = conversion_rate), stat = "identity")

6

আপনি সরাসরি geom_col () ব্যবহার করতে পারেন। এই লিঙ্কটিতে জিওম_বার () এবং জিওম_কোল () এর মধ্যে পার্থক্য দেখুন https://ggplot2.tidyverse.org/references/geom_bar.html

জিওম_বার () বারের উচ্চতা প্রতিটি গ্রুপের কেস সংখ্যার সাথে আনুপাতিক করে তোলে আপনি যদি বারগুলির উচ্চতা ডেটাতে মান উপস্থাপন করতে চান তবে পরিবর্তে জিওম_কোল () ব্যবহার করুন।

ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_col()

নিশ্চিত করতে পারি যে আমার এই সমস্যাটি ছিল এবং এটিই ছিল সহজতম সমাধান।
স্পেন্স_পি

0

আমি একই সন্ধান করছিলাম এবং এটিও কাজ করতে পারে

p.Wages.all.A_MEAN <- Wages.all %>%
                  group_by(`Career Cluster`, Year)%>%
                  summarize(ANNUAL.MEAN.WAGE = mean(A_MEAN))

নামগুলি (p.Wages.all.A_MEAN) [1] "ক্যারিয়ার ক্লাস্টার" "বছর" "বার্ষিক" মন.উইজ "

p.Wages.all.a.mean <- ggplot(p.Wages.all.A_MEAN, aes(Year, ANNUAL.MEAN.WAGE , color= `Career Cluster`))+
                  geom_point(aes(col=`Career Cluster` ), pch=15, size=2.75, alpha=1.5/4)+
                  theme(axis.text.x = element_text(color="#993333",  size=10, angle=0)) #face="italic",
p.Wages.all.a.mean
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.