#r
#r
Вопрос:
Пытаюсь реализовать анализ настроений в Твиттере. Все работало нормально, но когда я пытаюсь создать гистограммы твитов и получаю ошибку как
Error: Don't know how to add o to a plot
Когда я попробовал в первый раз, это дало мне правильный результат.
Но после этого он выдает мне указанную выше ошибку
Я хотел бы знать, почему мы получаем указанную выше ошибку. В моем случае я получаю эту ошибку в приведенных ниже случаях.
# add variables to data frame
scores$drink = factor(rep(c("wine", "beer", "coffee", "soda"), nd))
scores$very.pos = as.numeric(scores$score >= 2)
scores$very.neg = as.numeric(scores$score <= -2)
# how many very positives and very negatives
numpos = sum(scores$very.pos)
numneg = sum(scores$very.neg)
# global score
global_score = round( 100 * numpos / (numpos numneg) )
# colors
cols = c("#7CAE00", "#00BFC4", "#F8766D", "#C77CFF")
names(cols) = c("beer", "coffee", "soda", "wine")
1) # barplot of average score
meanscore = tapply(scores$score, scores$drink, mean)
df = data.frame(drink=names(meanscore), meanscore=meanscore)
df$drinks <- reorder(df$drink, df$meanscore)
ggplot(df, aes(y=meanscore))
geom_bar(data=df, aes(x=drinks, fill=drinks))
scale_fill_manual(values=cols[order(df$meanscore)])
opts(title = "Average Sentiment Score",
legend.position = "none")
2) # barplot of average very positive
drink_pos = ddply(scores, .(drink), summarise, mean_pos=mean(very.pos))
drink_pos$drinks <- reorder(drink_pos$drink, drink_pos$mean_pos)
ggplot(drink_pos, aes(y=mean_pos))
geom_bar(data=drink_pos, aes(x=drinks, fill=drinks))
scale_fill_manual(values=cols[order(drink_pos$mean_pos)])
options(title = "Average Very Positive Sentiment Score",
legend.position = "none")
3) # barplot of average very negative
drink_neg = ddply(scores, .(drink), summarise, mean_neg=mean(very.neg))
drink_neg$drinks <- reorder(drink_neg$drink, drink_neg$mean_neg)
ggplot(drink_neg, aes(y=mean_neg))
geom_bar(data=drink_neg, aes(x=drinks, fill=drinks))
scale_fill_manual(values=cols[order(drink_neg$mean_neg)])
options(title = "Average Very Negative Sentiment Score",
legend.position = "none")
Выше во всех трех случаях я получаю одну и ту же проблему.
пожалуйста, подскажите мне, почему я получаю эту ошибку.
Как я могу это решить.
Пожалуйста, предложите мне.
Заранее спасибо,
Mohan.V
Ответ №1:
Я не могу воссоздать проблему, но, возможно, это потому, что это устаревшая версия ggplot2.
Я попытался воссоздать ваш scores
data.frame вот так:
nd <- 100
scores <- as.data.frame(list(scores = sample(-3:3, nd, replace = T),
drink = factor(rep(c("wine", "beer", "coffee", "soda"), nd))))
scores$very.pos = as.numeric(scores$score >= 2)
scores$very.neg = as.numeric(scores$score <= -2)
Затем, чтобы создать первую диаграмму, мы должны использовать geom_col
вместо geom_bar
, также с современным ggplot2, мы используем labs
и theme
, а не opts
:
ggplot(df, aes(y=meanscore))
geom_col(data=df, aes(x=drinks, fill=drinks))
scale_fill_manual(values=cols[order(df$meanscore)])
labs( title = "Average Sentiment Score")
theme(legend.position = "none")
Тот же подход работает для других графиков.