R ggplot2: stat_count () का उपयोग बार ग्राफ में आयुर्वेदिक सौंदर्य त्रुटि के साथ नहीं किया जाना चाहिए


91

बार ग्राफ की साजिश रचते समय मुझे यह त्रुटि हो रही है और मैं इससे छुटकारा नहीं पा रहा हूं, मैंने qplot और ggplot दोनों की कोशिश की है, लेकिन अभी भी वही त्रुटि है।

निम्नलिखित मेरा कोड है:

 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

Data_country में डेटा:

    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:

डिफ़ॉल्ट रूप से, 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")

परिणाम:

यहाँ छवि विवरण दर्ज करें


1
हाँ, यह समझाने के लिए धन्यवाद काम किया है, मैं आपकी मदद की सराहना करने के लिए थोड़ा नया हूँ
उस्ताह

स्पष्टता, aesवास्तव में एक कार्य है। का तर्क ggplotहै mapping। हम aesफ़ंक्शन के माध्यम से उस मैपिंग को प्रदान करते हैं , इसलिए आप पैटर्न ggplot(df, aes(...))को बहुत देखते हैं । लेकिन पैटर्न ggplot (data_frame) + aes (x = X, y = Y) भी ठीक है। संभावित रूप से बेहतर पठनीयता के अलावा, aesअलग से कॉल करने का उपयोग एक प्रीमियर प्लॉट पर सौंदर्यशास्त्र को संशोधित करने के लिए किया जा सकता है: p <- ggplot (iris) + anes (x = Species, y = Sepal.Length) + geom_point (); क्ष <- p + एईएस (y = Petal.Length)
teofil

7

जब आप अपने डेटा फ्रेम में मौजूद अपने डेटा को y मान के रूप में उपयोग करना चाहते हैं, तो आपको मैपिंग पैरामीटर में stat = "पहचान" जोड़ना होगा। फ़ंक्शन geom_bar का डिफ़ॉल्ट y मान है। उदाहरण के लिए,

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

6

आप सीधे geom_col () का उपयोग कर सकते हैं। इस लिंक https://ggplot2.tidyverse.org/reference/geom_bar.html में geom_bar () और geom_col () के बीच अंतर देखें

geom_bar () प्रत्येक समूह में मामलों की संख्या के लिए बार के अनुपात को आनुपातिक बनाता है यदि आप चाहते हैं कि बार की ऊँचाई डेटा में मूल्यों का प्रतिनिधित्व करें, इसके बजाय geom_col () का उपयोग करें।

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

पुष्टि कर सकते हैं कि मैं इस मुद्दे पर गया था और यह सबसे सरल समाधान था।
Spence_p

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] "कैरियर क्लस्टर" "वर्ष" "ANNUAL.MEAN.WAGE"

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.