r - 使用 "expression"使用数据帧中的值创建带有斜体的标签列表

标签 r plot legend

我正在尝试创建包含斜体的标签列表。我可以用这样的“表达式”来做到这一点,当我将它们放在绘图上时(通过添加图例作为示例,但我将以不同的方式使用它们),一切都很好。

sp.names=c(expression(paste("species ",italic("one")," sp.")),
           expression(paste("species ",italic("two")," sp.")))
plot(1:10)
legend("topleft",legend=sp.names)

enter image description here

但是我不想直接在代码中指定标签中的单词,而是想从数据框中的单元格调用它们(因为它们有很多,并且它们根据我的基础数据而变化)。但是当我尝试指定我想要的数据框单元格时,它无法正确打印标签(见下文)。也许我有一种不同的方式来调用我希望“表达式”函数能够识别的单元格?

df=data.frame(V1=c("species","species","species"),V2=c("one","two","three"))
sp.names=c(expression(paste(df$V1[1],italic(df$V2[1])," sp.")),
           expression(paste(df$V1[2],italic(df$V2[2])," sp.")))
plot(1:10)
legend("topleft",legend=sp.names)

enter image description here

最佳答案

使用substitute,它替换表达式中的变量。

sp.names=c(substitute(V1 ~ italic(V2) ~ "sp.", df[1,]),
           substitute(V1 ~ italic(V2) ~ "sp.", df[2,]))

我还删除了不需要的 paste (它在plotmath 中具有不同的含义),并将其替换为 ~ 以提高可读性。

关于r - 使用 "expression"使用数据帧中的值创建带有斜体的标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72456717/

相关文章:

r - ggplot 中的多线图,具有不同颜色的点和线和点的图例

javascript - 如何更改 Highchart 中图例的布局和对齐方式?

R:随机森林中调整 mtry 时出错(回归)

r - 使用 Data.Table 有条件地选择组中的行

d3.js - 将(第二个)x 轴添加到散点图以显示组信息

python - 显示从 Python 运行的 R 绘图

r - 使用 ggplot2 的多个依赖级别旭日图/圆环图

使用 dplyr::filter() 删除 NA 观测值

r - 如何更改ggplot中的图例标题

r - 如何在ggplot2上将图例符号与包装的图例文本对齐