使用geom_table()创建含plotmath表达式的图例时触发类型转换错误的求助
使用geom_table()创建含plotmath表达式的图例时触发类型转换错误的求助
我最近在给ggplot图表添加带plotmath表达式的geom_table图例时,碰到了一个头疼的类型转换错误,错误信息如下:
Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"expression"’ to a data.frame
下面是我的操作步骤和代码,麻烦大家帮忙看看问题出在哪:
首先是创建用于图例的表格数据,我想在Parameter列里用plotmath表达式来显示带下标的参数名(比如F[max]这种格式),于是写了这段代码:
# 制作表格图例数据 legend_table_a488_old <- tibble(x = 2, y = 170, tb = list(data.frame( Parameter = c(expression(F[max]), expression(F[min]), expression(K[d])), Value = c("148.7", "172.7", "0.2298"))))
结果发现把plotmath表达式直接放进data.frame的列里后,后续调用geom_table就触发了上面的错误,看起来是不允许在数据框里直接用plotmath表达式?
之后我还定义了一个表格的主题样式,这部分应该没什么问题:
# 表格主题设置 tabletheme <- gridExtra::ttheme_default(colhead = list(fg_params=list(col="white"), bg_params=list(fill="red")), core = list(bg_params=list(fill = "#FFCCCC", col = "green")))
最后我把这个表格数据加到我的ggplot图表中,代码大致是这样的:
ggplot(data = a488_old_df, aes(x = x, y = y)) + ggtitle("SuBP 348C - Alexa 488 Fluorescence") + # 其他图层代码... geom_table(data = legend_table_a488_old, aes(label = tb), theme = tabletheme)
现在的核心需求就是:我既想在表格的参数列里用plotmath渲染出带下标的格式,又不想触发这个类型转换错误,有没有大佬能指点一下该怎么调整代码?
备注:内容来源于stack exchange,提问作者anon




