#r #ggplot2
#r #ggplot2
Вопрос:
Я пытаюсь сравнить базовый график R с ggplot, чтобы увидеть, получаю ли я воспроизводимую фигуру, график представляет собой простую диаграмму с легендой, но когда я запускаю код, я получаю ошибку, мои данные здесь:
structure(list(rated = c(FALSE, TRUE, TRUE, TRUE), turns = c(13L,
16L, 61L, 61L), victory_status = structure(c(2L, 3L, 1L, 1L), .Label = c("mate",
"outoftime", "resign"), class = "factor"), winner = structure(c(2L,
1L, 2L, 2L), .Label = c("charcoal", "cream"), class = "factor"),
increment_code = structure(c(1L, 3L, 3L, 2L), .Label = c("15 2",
"20 0", "5 10"), class = "factor"), cream_rating = c(1500L,
1322L, 1496L, 1439L), charcoal_rating = c(1191L, 1261L, 1500L,
1454L), opening_name = structure(c(4L, 2L, 1L, 3L), .Label = c("King's Pawn Game: Leonardis Variation",
"Nimzowitsch Defense: Kennedy Variation", "Queen's Pawn Game: Zukertort Variation",
"Slav Defense: Exchange Variation"), class = "factor")), row.names = c(NA,
4L), class = "data.frame")
Я хотел сравнить базовую функцию R и ggplot, я новичок в ggplot, я использовал следующее:
dfg<-read.csv("./data/games.csv")
d<-table(dfg$winner, dfg$rated)
nd.1<-data.frame(dfg)
barplot(dwin, col=c("blue", "red", "green"))
legend("topleft", legend=rownames(d), col("blue", "red", "green"), pch= 16)
ggplot(nd.1, aes(fill=Var1), y=Freq, x=Var2)
geom_bar(position="stack", stat="identity")
Я получаю эту ошибку:
ERROR while rich displaying an object: Error in FUN(X[[i]], ...): object 'Var1' not found
Traceback:
1. FUN(X[[i]], ...)
2. tryCatch(withCallingHandlers({
. if (!mime %in% names(repr::mime2repr))
. stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
. rpr <- repr::mime2repr[[mime]](obj)
. if (is.null(rpr))
. return(NULL)
. prepare_content(is.raw(rpr), rpr)
. }, error = error_handler), error = outer_handler)
3. tryCatchList(expr, classes, parentenv, handlers)
4. tryCatchOne(expr, names, parentenv, handlers[[1L]])
5. doTryCatch(return(expr), name, parentenv, handler)
6. withCallingHandlers({
. if (!mime %in% names(repr::mime2repr))
. stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
. rpr <- repr::mime2repr[[mime]](obj)
. if (is.null(rpr))
. return(NULL)
. prepare_content(is.raw(rpr), rpr)
. }, error = error_handler)
7. repr::mime2repr[[mime]](obj)
8. repr_text.default(obj)
9. paste(capture.output(print(obj)), collapse = "n")
10. capture.output(print(obj))
11. evalVis(expr)
12. withVisible(eval(expr, pf))
13. eval(expr, pf)
14. eval(expr, pf)
15. print(obj)
16. print.ggplot(obj)
17. ggplot_build(x)
18. ggplot_build.ggplot(x)
19. by_layer(function(l, d) l$compute_aesthetics(d, plot))
20. f(l = layers[[i]], d = data[[i]])
21. l$compute_aesthetics(d, plot)
22. f(..., self = self)
23. scales_add_defaults(plot$scales, data, aesthetics, plot$plot_env)
24. lapply(aesthetics[new_aesthetics], eval_tidy, data = data)
25. FUN(X[[i]], ...)
Что пошло не так?
Ответ №1:
Возможно, вам нужно разместить все элементы внутри aes()
вот так. Проблема в том, что большинство элементов эстетики для графика были снаружи aes()
. Размещение их внутри функции приведет к следующему выводу (я использовал в качестве dfg
данных, которыми вы поделились. Данные для первого графика отсутствовали, поэтому я не смог его воспроизвести). Вот код для ggplot2
визуализации:
library(ggplot2)
#Data
d<-table(dfg$winner, dfg$rated)
nd.1<-data.frame(d)
#Plot
ggplot(nd.1, aes( y=Freq, x=Var2,fill=Var1),)
geom_bar(position="stack", stat="identity")
Вывод:
Комментарии:
1. Это ошибка, которая показывает «ОШИБКА при расширенном отображении объекта: ошибка в FUN (X[[i]], …): объект ‘Var2′ не найден’
2. @user432797 Пожалуйста, в наборе данных, который вы используете для графика, проверьте имена,
names(yourdf)
как видно из данных, которыми вы поделились, это работает, поэтому я думаю, что вы используете неправильные имена. Дайте мне знать, как это происходит!3. Я использую R в jupyter, и по какой-то причине вначале это не сработало, я перезапустил и компьютер, и браузер, и это сработало, спасибо за поддержку! Он работал без запятой в конце переменной
Var1),