R 具有特征线概念的几何线

R 具有特征线概念的几何线,r,plot,ggplot2,R,Plot,Ggplot2,我有一些ggplot代码,在0.8.9中运行良好,但在0.9.1中没有 我将在theDF中绘制数据,并希望在xintercept=“2010 Q1”处绘制一条垂直线。网格仅用于创建theDF theGrid <- expand.grid(2009:2011, 1:4) theDF <- data.frame(YrQtr=sprintf("%s Q%s", theGrid$Var1, theGrid$Var2), Minutes=c(1000,

我有一些ggplot代码,在0.8.9中运行良好,但在0.9.1中没有

我将在
theDF
中绘制数据,并希望在
xintercept=“2010 Q1”处绘制一条垂直线。
网格
仅用于创建
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))
但这并不是解决我问题的好办法


也许在绘图的x轴上使用字符向量或因子时,每个唯一项的默认值都是从1开始的整数。因此,如果标高为c(“A”、“B”、“c”),则x轴位置为c(1,2,3)。没有字符位置,只有字符标签。如果你想在a处画一条垂直线,那么把它放在1处。如果你想让它在A和B之间的一半,那么把它放在1.5。同样,这些是默认设置。如果一个特定的绘图做了其他的事情,你可以通过在几个位置放几行线,看看会发生什么来轻松地解决这个问题。

你可以尝试以下方法:

g + geom_vline(aes(xintercept = which(levels(YrQtr) %in% '2010 Q1')))
这避免了为所选因子级别创建虚拟数据框的需要。which()命令返回要与vline关联的因子级别的索引(如果%in%运算符的右侧是向量,则返回一个或多个索引)


需要注意的是,如果某些类别没有出现在您的数据中,并且您在刻度中使用了
drop=TRUE
,那么这些行将不会显示在正确的位置。

如果没有
顶点(我认为这是一个数据框?),这是不可复制的。@joran我偶然在
aes
中使用了
数据=
。现在已修复,Verts已被
data.frame(Vert=“2010 Q2”)
替换。这看起来像个bug。你能把问题提交到:是的,是这样的。但在旧版本的
ggplot2
中,如果输入“A”,则会将其转换为1并正确放置行。这种行为是可取的,因为用户将知道原始比例,而不一定知道它转换成什么。我希望能重现用于展示的行为。有趣的方法。我将检查以确保它可以推广到其他数据类型。
g + geom_vline(data=data.frame(Vert=4), aes(xintercept=Vert))
g + geom_vline(aes(xintercept = which(levels(YrQtr) %in% '2010 Q1')))