在ggplot代码中使用ifelse()条件时出错

时间:2019-09-10 18:18:59

标签: r ggplot2 dplyr data.table tidyverse

不幸的是,尝试在ifelse代码中使用ggplot条件时,我在{{1}中将element_blank()函数传递给axis.test.x参数时遇到错误}。

theme()

任何建议或帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用eval()parse()来解决此问题。 eval()函数计算一个表达式。 parse()函数将字符类的R对象转换为表达式类的R对象。通过使用,If-Else可以更改表达式。

# control  
hideAxis = T

if(hideAxis == T){   
axis_text_x_element <- 'element_blank()' 
} else { 
axis_text_x_element <- 'element_text(angle =20)' 
}

# plot  
ggplot(data = iris , aes(x=Sepal.Length, y=Sepal.Length)) +    
geom_bar(stat="identity", fill ='#2219CCCC') + 
xlab("Sepal.Length") + 
ylab("Sepal.Length") +   
eval(parse(text=(paste("theme(axis.text.x = ",axis_text_x_element,")"))))

Output(hideAxis == T):enter image description here

Output(hideAxis == F):enter image description here