1. ホーム
  2. r

[解決済み] R ggplot2: stat_count() は、棒グラフの y 美的エラーで使用してはいけない。

2023-02-15 06:01:11

質問

棒グラフのプロット中にこのエラーが発生し、それを取り除くことができません。

以下は私のコードです。

 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

棒グラフでエラーが発生し、点線グラフでは発生しません。

解決方法を教えてください。

まず、あなたのコードは少しずれています。 aes() は引数で ggplot() を使用しないのであれば ggplot(...) + aes(...) + layers

次に、ヘルプファイルから ?geom_bar :

デフォルトでは、geom_barはstat="count"を使用し、バーの高さを各グループのケース数に比例させるようになっています。 バーの高さを各グループのケース数に比例させます(または、重み が指定された場合、重みの合計になります)。もし,棒の高さを 棒グラフの高さがデータ中の値を表すようにしたい場合は, stat="identity" を使用し を使用して、変数を y の美学にマップします。

あなたは2番目のケースを望んでおり、バーの高さが 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")

結果