我在将ggplot与Rmarkdown结合使用时遇到问题。 我有一个应该返回ggplot图的代码。当我在R会话中执行该代码时,它可以工作,但是使用R markdown时,同一代码将返回一个空图。这是我在R会话中使用的代码>
m<-ggplot(data=t,aes_string(x=v,y =t$cnt_pct))
m+geom_bar(stat = "identity",fill="#FF0000",color='black')+geom_text(aes(label = cnt_pct),vjust=-0.2)+ggtitle(paste(v,paste("graph")))+theme(plot.title = element_text(hjust = 0.5))+ylab("percent")+geom_line(aes_string(x=v,y =t$keshel_pct),group=1,size=2)
这是我在Rmarkdown中使用的代码
m<-ggplot(data=t,aes_string(x=v,y =t$cnt_pct))
m+geom_bar(stat = "identity",fill="#FF0000",color='black')+geom_text(aes(label = cnt_pct),vjust=-0.2)+ggtitle(paste(v,paste("graph")))+theme(plot.title = element_text(hjust = 0.5))+ylab("percent")+geom_line(aes_string(x=v,y =t$keshel_pct),group=1,size=2)
plot(m)
两者之间的唯一区别是使用Rmarkwond添加了plot(m)线。 由于某些原因,plot命令使图形为空,当我删除它并运行Rmarkdown时,不会返回任何图形。
这是空的图
这是在R会话中工作的图形
有人知道我的错误是什么吗?
任何帮助都将得到
答案 0 :(得分:1)
您在这里遇到一些问题:
1)您的绘图语法有问题。 aes_string
采用表示列名称的字符串,但是您要为x传递变量v
,而为y传递直接列数据t$cnt_pnt
。查看一些ggplot
示例以获取正确的语法。
2)plot(m)
语句不起作用的原因有两个:首先,您print
个ggplot对象,而不是plot
个对象。其次,您没有将m + geom_bar(...)
语句分配给任何内容,因此即使您的plot
语句确实起作用,您也可以在没有geom_bar(...)
的情况下获得情节。尝试例如改为y = m+ geom_bar(...); print(y)
。