Reputation: 73
I am having problems using ggplot with Rmarkdown. I have a code that is supposed to return a ggplot graph.When I execute the code in a R session it works but the same code returns an empty plot when using R markdown.This is the code I am using in the R session
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)
This is the code I am using in the 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)
The only diffrence between the two is that with the Rmarkwond a plot(m) line is added. For some reason the plot command makes the graph empty, when I remove it and run the Rmarkdown no graphs are returned.
This is the graph empty
This is the graph working in a session of R
Anybody has any idea what is my mistake?
Any help will be appriciated
Upvotes: 1
Views: 1676
Reputation: 3788
You have a few issues here:
1) your plot syntax has issues. aes_string
takes strings referring to column names, but you're passing a variable v
for x and direct column data t$cnt_pnt
for y. Check some ggplot
examples to get the syntax right.
2) The plot(m)
statement shouldn't work for two reasons: first, you print
ggplot objects, not plot
them. Second, you are not assigning the m + geom_bar(...)
statement to anything, so even if your plot
statement did work, you'd get the plot without the geom_bar(...)
stuff. Try e.g. y = m+ geom_bar(...); print(y)
instead.
Upvotes: 2