当x轴是分类时,如何标记水平线?

时间:2011-09-01 22:33:08

标签: r label ggplot2

worked example显示如何使用ggplot2标记R中的直线。请看例5 - “按经度重新创建以下飞行量图”。

如果x轴是分类而不是连续的,你如何编码?如何在当前

的geom_text中编写语法部分
data = data.frame(x = - 119, y = 0) 

我创建了一行

 + geom_text(aes(x,y, label = "seronegative"), 
             data = data.frame(x = 1, y = 20), 
             size = 4, hjust = 0, vjust = 0, angle = 0)

我尝试了几个选项

data = data.frame(x = 1, y = 20)
data = data.frame(x = factor(1), y = 20)
#where gard is the name of one of the categories
data = data.frame(x = "gard", y = 20) 

...但我收到了错误

  

一元运算符的无效参数

1 个答案:

答案 0 :(得分:4)

我并不完全清楚你要做什么,因为你说你试图创建一行,然后你的代码使用geom_text。假设您想要使用分类x变量放置一条垂直线,并在该线上垂直定向文本标签,这是一个简单的示例:

dat <- data.frame(x = letters[1:5],y = 1:5)
txt <- data.frame(x = 1.5, y = 1, lab = "label")

ggplot(dat,aes(x = x, y = y)) + 
    geom_point() + 
    geom_vline(xintercept = 1.5) + 
    geom_text(data = txt,aes(label = lab),angle = 90, hjust = 0, vjust = 0)

在我的机器上生成此输出:

enter image description here

请注意,我将文本标签放在单独的数据框中, ggplot调用之外。这不是绝对必要的,但我更喜欢它,因为我发现它避免混淆。

在此处使用x值1.5作为文本标签,如果您想直接在绘制的x值上设置它,则将其设置为“a”。

您所描述的错误在我的代码中向您提出了一个简单的语法错误(您尚未完全提供)。也许这个例子可以帮助你发现它。