idf4floor
idf4floor

Reputation: 73

ggplot graphs appearing empty when using Rmarkdown

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

enter image description here

This is the graph working in a session of R

enter image description here

Anybody has any idea what is my mistake?

Any help will be appriciated

Upvotes: 1

Views: 1676

Answers (1)

mikeck
mikeck

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

Related Questions