Как вы маркируете горизонтальную линию, когда ось X является категоричной? - PullRequest
4 голосов
/ 02 сентября 2011

Есть обработанный пример , который показывает, как пометить прямую линию в R с помощью ggplot2.Пожалуйста, посмотрите на пример 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 Ответ

4 голосов
/ 02 сентября 2011

Мне не совсем понятно, что вы пытаетесь сделать, поскольку вы говорите, что пытаетесь создать строку, а затем ваш код использует 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, как если бы вы установили его на «a», если вы хотите, чтобы оно было указано непосредственно на нанесенных значениях x.

Ошибка, которую вы описываете, подсказывает мне простую синтаксическую ошибку где-то в вашем коде (которую вы не предоставили полностью). Возможно, этот пример поможет вам определить это.

...