R Ggplot2应用函数迭代列名称中的轴标签

R Ggplot2应用函数迭代列名称中的轴标签,r,ggplot2,R,Ggplot2,我想更改ggplot的y轴标签(或者主标题也可以),以反映在apply函数中迭代的列名 以下是一些示例数据和我的工作应用函数: trial_df <- data.frame("Patient" = c(1,1,2,2,3,3,4,4), "Outcome" = c("NED", "NED", "NED", "NED", &q

我想更改ggplot的y轴标签(或者主标题也可以),以反映在apply函数中迭代的列名

以下是一些示例数据和我的工作应用函数:

trial_df <- data.frame("Patient" = c(1,1,2,2,3,3,4,4), 
                       "Outcome" = c("NED", "NED", "NED", "NED", "Relapse","Relapse","Relapse","Relapse"),
                       "Time_Point" = c("Baseline", "Week3", "Baseline", "Week3","Baseline", "Week3","Baseline", "Week3"),
                       "CD4_Param" = c(50.8,53.1,20.3,18.1,30.8,24.5,35.2,31.0),
                       "CD8_Param" = c(5.3,9.7,4.4,4.3,3.1,3.2,5.6,5.3),
                       "CD3_Param" = c(11.6,16.6,5.0,5.1,14.3,7.1,5.9,8.1))

apply(trial_df[,4:length(trial_df)], 2, function(i) ggplot(data = trial_df, aes_string(x = "Time_Point", y = i )) +
        facet_wrap(~Outcome) +
        geom_boxplot(alpha = 0.1) +
        geom_point(aes(color = `Outcome`, fill = `Outcome`)) +
        geom_path(aes(group = `Patient`, color = `Outcome`)) +
        theme_minimal() +
        ggpubr::stat_compare_means( method = "wilcox.test") +
        scale_fill_manual(values=c("blue", "red")) +
        scale_color_manual(values=c("blue", "red"))) 

trial_df所以……出于最奇怪的原因,我不知道为什么。这给你想要的,但只有一个图形

apply(trial_df[,4:length(trial_df)], 2, function(i) ggplot(data = trial_df, aes_string(x = "Time_Point", y = i )) +
        facet_wrap(~Outcome) +
        geom_boxplot(alpha = 0.1) +
        geom_point(aes(color = `Outcome`, fill = `Outcome`)) +
        geom_path(aes(group = `Patient`, color = `Outcome`)) +
        theme_minimal() +
        stat_compare_means( method = "wilcox.test") +
        scale_fill_manual(values=c("blue", "red")) +
        scale_color_manual(values=c("blue", "red"))+
        labs(y=colnames(trial_df)[i])) 
提供以下信息:

我不认为这是OP想要的;您显示的是每列的第一个值(例如50.8),而不是列名(例如CD4_Param)。噢,我来说明一下。好眼力!我已经尝试了一百万种不同的方法来获得这个结果,但我只能得到
CD8_Param
图形的y轴。希望有人能解决这个问题并解释原因!谢谢你试着帮助我!我完全不知道为什么会发生这种情况,我也遇到了同样的问题。我仍然不知道这里发生了什么,但通过使用Lappy循环遍历名称,解决了我的更大/原始问题,正如我最初问题下的上述评论所建议的。太棒了!向自己发布一个答案,以便其他有相同问题的人可以解决它。您是否尝试过通过y变量的名称而不是数据集的列进行循环?然后,您可以使用相同的ggplot2代码切换到,例如,
lappy()
。(注意
aes_string()
现在已被弃用;如果循环遍历列名并绘制ggplot2绘图,则可以使用
.data
代词a la
y=.data[[column name]]]
。)使用colnames和apply解决了问题!非常感谢您的建议@aosmith!对于后来偶然发现这一点的人,下面是我所做的:
lappy(colnames(trial_df[,4:length(trial_df)]),function(I)ggplot(…)