Ошибка: geom_bar требует следующую отсутствующую эстетику: y - PullRequest
0 голосов
/ 25 июня 2018

Здесь в папке zomato есть 4 файла CSV (бенголи, китайский, итальянский и панджабский). Я сравниваю эти файлы с текстовым файлом с положительным и отрицательным словом, используя анализ настроений на основе лексики. Все работает хорошо, также я получаю значения a, c, e, g очень идеально. но когда дело доходит до сюжета, это дает мне эту ошибку

Не знаю, как автоматически выбирать масштаб для объекта списка типов. По умолчанию для непрерывного. Ошибка: geom_bar требует следующую отсутствующую эстетику: y

 library(stringr)
    library(ggplot2)
    library(tm)


     src <- DirSource("./Data/foodwise/zomato")
        docs <- Corpus(src)
        docs <- tm_map(docs, removePunctuation)
        docs <- tm_map(docs,content_transformer(tolower))
        docs <- tm_map(docs, removeNumbers)
        docs <- tm_map(docs, removeWords,stopwords("english"))
        docs <- tm_map(docs, stripWhitespace)
        docs <- tm_map(docs, stemDocument)
        writeCorpus(docs, path="./Data")

texts <- readLines("./Data/zomato bengoli.csv.txt")
        opinion.lexicon.pos <- scan('./Data/positive-word.txt', what='character', comment.char = ';')
        opinion.lexicon.neg <- scan('./Data/negative-word.txt', what='character', comment.char = ';')
        jj <- str_split(texts, pattern="\\s+")
        a <- lapply(jj,function(x){sum(!is.na(match(x,opinion.lexicon.pos)))})
        texts1 <- readLines("./Data/zomato chinese.csv.txt")
        jj <- str_split(texts1, pattern="\\s+")
        c <- lapply(jj,function(x){sum(!is.na(match(x,opinion.lexicon.pos)))})

        texts2 <- readLines("./Data/zomato Italian.csv.txt")
        jj <- str_split(texts2, pattern="\\s+")
        e <- lapply(jj,function(x){sum(!is.na(match(x,opinion.lexicon.pos)))})

        texts3 <- readLines("./Data/zomato panjabi.csv.txt")
        jj <- str_split(texts3, pattern="\\s+")
        g <- lapply(jj,function(x){sum(!is.na(match(x,opinion.lexicon.pos)))})
        x <-c("Bengoli", "Chinese", "Italian", "Panjabi")
        y <- c(a, c ,e, g)
        data <- data.frame(x, y)
        ggplot(data, aes(x, y)) + geom_bar(stat = "identity",aes(fill = x)) + xlab("Cuisines") + ylab("Total count") + ggtitle("")+ scale_fill_manual("Cuisines", values = c("Italian" = "lightpink", "Panjabi" = "lightblue", "Chinese" = "darkgrey", "Bengoli"="lightgreen"))

1 Ответ

0 голосов
/ 25 июня 2018

Как уже упоминалось, нам действительно нужен воспроизводимый пример, чтобы хорошо отвечать на вопросы, но я постараюсь, основываясь на том, что, я думаю, вы спрашиваете

Ваша главная проблема в том, что вы a, c,e и g - все списки, поэтому y также список.Вам нужно преобразовать их в числовые, а затем суммировать, если вы хотите всего

jj <- list("Bengoli","English", "Bengoli")
g <- lapply(jj,function(i){sum(!is.na(match(i,"Bengoli")))})
# this is a list:
g

g2 <- sum(unlist(g))
# Now it is a number which you can supply to ggplot
g2

x <-c("Bengoli", "Chinese", "Italian", "Panjabi")
y <- c(g2,4,3,6)

data <- data.frame(x, y)
ggplot(data, aes(x, y)) + 
  geom_bar(stat = "identity",aes(fill = x)) + 
  xlab("Cuisines") + 
  ylab("Total count") + 
  scale_fill_manual("Cuisines",
                    values = c("Italian" = "lightpink",
                               "Panjabi" = "lightblue", 
                               "Chinese" = "darkgrey", 
                               "Bengoli"="lightgreen"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...