更改facet_grid中的构面标签并同时添加geom_vline时发生错误

tu

我试图在不修改数据框的情况下更改构面标签,并在绘图中添加垂直线以增强易懂性。

library(ggplot2)
df <- data.frame(weeks = rep(-3:3, each = 2),
                 is_manual = rep(c(TRUE, FALSE), times = 7),
                 value = c(rnorm(7, 10), rnorm(7, 20)))

# Plotting
ggplot(df, aes(x = weeks, y = value)) + geom_line() +
  facet_grid(is_manual ~ .) +
  geom_vline(xintercept = 0, color = "blue", linetype = 2)

给我这个,效果很好:

plot1.png

现在,我想更改构面标签,以便每个人都知道TRUE和FALSE是什么。

ggplot(df, aes(x = weeks, y = value)) + geom_line() +
  facet_grid(ifelse(is_manual, "Manual", "Uploaded") ~ .) +
  geom_vline(xintercept = 0, color = "blue", linetype = 2)

,但返回错误:

ifelse中的错误(is_manual,“手动”,“已上传”):找不到对象“ is_manual”

但是,一旦我删除了该geom_vline部件,它就可以正常工作,这意味着应该可以找到“ is_manual”。

ggplot(df, aes(x = weeks, y = value)) + geom_line() +
  facet_grid(ifelse(is_manual, "Manual", "Uploaded") ~ .)

plot2.png

我可以通过解决

df$is_manual <- ifelse(df$is_manual, "Manual", "Uploaded")
ggplot(df, aes(x = weeks, y = value)) + geom_line() +
  facet_grid(is_manual ~ .) +
  geom_vline(xintercept = 0, color = "blue", linetype = 2)

,但它会更改我的基础数据。

有没有一种方法可以更改构面标签并同时添加垂直线,而又不更改数据框内容?还是这是一个需要报告的错误?

eipi10

只是在这里猜测,但是也许geom_vline是从原始数据帧中将构面标签名称df传递给ggplot,而不是从中使用的更新公式中获取构面标签名称facet_grid,从而在geom_vline无法确定构面的位置时导致错误

在任何情况下,您都可以使用dplyr管道(%>%)快速更新基础数据,而不必更改基础数据,从而避免出现以下错误:

library(tidyverse) 

ggplot(df %>% mutate(is_manual = ifelse(is_manual, "Manual", "Uploaded"),
       aes(x = weeks, y = value)) + geom_line() +
  facet_grid(is_manual ~ .) +
  geom_vline(xintercept = 0, color = "blue", linetype = 2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在ggplot2中旋转切换的构面标签facet_grid

使用facet_grid时如何更改刻面边框的颜色

ggplot重命名facet_wrap中的构面标签

如何在R中的geom_vline中删除/更改标签?

在facet_grid中订购嵌套的构面标签

R:geom_vline标签上的上标

ggplot中的geom_vline和facet_wrap错误

ggplot2:从图中删除未使用的因子级别组合的构面(facet_grid)

如何在facet_wrap中更改构面标签

将分组的geom_vline添加到多个构面

在ggplot2中的特定构面之间添加空间(facet_grid)

使用因子变量和geom_hline / geom_vline进行构面

geom_hline或geom_vline如果在函数内部调用并且使用facet_grid(),则似乎不接受矢量作为参考线

从构面图上的标签数据框中添加标签

R顶部的geom_bar和facet_grid标签

如何在密度图中将geom_vline的x截距添加为标签?

geom_vline + geom_text:垂直旋转标签时对齐标签

如何使用ggplot2 facet_grid注释没有数据的构面?

python plotnine:facet_grid中的标签编辑器不更改构面标题

如何在ggplot中向geom_vline添加文本

facet_grid label_both将标签文本动态构面变量包装在闪亮的图中

在ggplot2中使用facet_grid()函数时,如何使用labeller()函数获取列总计显示在构面的标签中

在facet_grid中打印百分比标签

使用geom_boxplot,facet_grid时,将注释或文本添加到各个箱形图

控制facet_grid、ggplot中的间距和标签

使用 facet_grid 更改标签的问题

如何在 geom_vline 中添加图例?

更改构面图上的标签

如何为 R 中的 facet_grid 中的每个构面单独更改每个图形的 x 轴中断数?