gpt4 book ai didi

r - 带有字符 xintercept 的 geom_vline

转载 作者:行者123 更新时间:2023-12-04 10:01:23 28 4
gpt4 key购买 nike

我有一些 ggplot 代码在 0.8.9 中运行良好,但在 0.9.1 中不起作用。

我将绘制 theDF 中的数据并想在 xintercept="2010 Q1." 处绘制一条垂直线theGrid仅用于创建 theDF .

theGrid <- expand.grid(2009:2011, 1:4)
theDF <- data.frame(YrQtr=sprintf("%s Q%s", theGrid$Var1, theGrid$Var2),
Minutes=c(1000, 2200, 1450, 1825, 1970, 1770, 1640, 1920, 1790, 1800, 1750, 1600))

使用的代码是:
g <- ggplot(theDF, aes(x=YrQtr, y=Minutes)) + 
geom_point() +
opts(axis.text.x=theme_text(angle=90))

g + geom_vline(data=data.frame(Vert="2010 Q2"), aes(xintercept=Vert))

同样,这在带有 ggplot2 0.8.9 的 R 2.13.2 中工作得很好,但在带有 ggplot2 0.9.1 的 R 2.14+ 中却没有。

一种解决方法是:
g + geom_vline(data=data.frame(Vert=4), aes(xintercept=Vert))

但这不是解决我问题的好方法。

也许是在搞乱 scale_x_discrete可能有帮助?

最佳答案

你可以试试这个:

g + geom_vline(aes(xintercept = which(levels(YrQtr) %in% '2010 Q1')))

这避免了为选定的因子水平创建虚拟数据框的需要。 which() 命令返回因子 level[s] 的索引(如果 %in% 运算符的右侧是向量,则返回索引)以与 vlines 关联。

对此要注意的是,如果某些类别未出现在您的数据中,而您使用 drop = TRUE在比例尺中,那么线条将不会出现在正确的位置。

关于r - 带有字符 xintercept 的 geom_vline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093248/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com