繁体   English   中英

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

[英]Error when using ifelse() condition in ggplot code

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

 hideAxis=T
 ggplot(data = iris , aes(x=Sepal.Length, y=Sepal.Length)) + 
        geom_bar(stat="identity", fill ='#2219CCCC') + 
        xlab("Sepal.Length") + 
        ylab("Sepal.Length") +
        theme(axis.text.x = ifelse(hideAxis==TRUE,element_blank(),element_text(angle =20)))

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

使用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,")"))))

输出(hideAxis == T): 在此处输入图像描述

输出(hideAxis == F): 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM