首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将基图与ggplot进行比较将返回一个错误。

将基图与ggplot进行比较将返回一个错误。
EN

Stack Overflow用户
提问于 2020-10-06 20:50:38
回答 1查看 33关注 0票数 0

我试图比较基R图和ggplot,看看我是否得到了可复制的图形,这个图是简单的barplot图例,但是当我运行代码时,我得到了一个错误,我的数据在这里:

代码语言:javascript
运行
复制
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")

我想比较一下Base和ggplot函数,我刚开始使用ggplot,我使用了以下方法:

代码语言:javascript
运行
复制
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")

我得到了一个错误:

代码语言:javascript
运行
复制
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]], ...)

出什么问题了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 20:57:09

也许你必须像这样把所有的元素放在aes()中。问题是,情节的大部分美学元素都在aes()之外。将它们放置在函数中将产生下一个输出(我已将您共享的数据作为dfg使用。第一个地块的数据不存在,所以我无法复制)。这里是用于ggplot2可视化的代码:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64233609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档