Добавить текст в ggplot

(обновлено) У меня есть ggplot, как это, но тогда ось x Date масштабируется:

g1 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()

Выше двух баров (давайте скажем, VS2 и IF, но на моем графике это дата) Я хочу поместить текстовую надпись над столбцами в higt 13.000.

Я пробовал много вещей, но это то, что было ближе всего: Это то, что я пытался на моем графике с осью Date   g1 + geom_text (aes (as.Date( "2014-10-05" ), 13000), label = "boat" )

но это добавляет только один к графику и как только я пытаюсь его расширить, например, с помощью

g1 + geom_text(aes(c(as.Date("2014-10-05"),as.Date("2014-10-20")) , 13000), label=c("boat", "train"))

то я получаю ошибку:

Ошибка: Эстетика должна быть либо одной, либо той же длины, что и dataProblems: c (as.Date( "2014-10-05" ), as.Date( "2014-10-20" ))

Я также попытался прочитать текст и метки из dataframe (oefen), где я использовал те же имена, что и исходный сюжет

g1 + geom_text(data=oefen, aes(x=newdat, y=Number, label=oefen$labs, fill=1))

Я получаю сообщение об ошибке

Ошибка: непрерывное значение, заданное для дискретного масштаба

Я пробовал много других решений, но не могу найти ответ. Что мне не хватает?

Ответы

Ответ 1

Рассмотрите возможность использования annotate() для размещения любого текста, который вы хотите, в определенном месте на графике. Факторные переменные, как и коэффициент ясности по оси x, имеют число для каждого уровня, поэтому вы можете использовать этот номер для поиска текста. Я предполагаю, что переменные даты имеют одинаковое использование.:

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x=8, y=13000, label= "boat") + 
  annotate("text", x = 4, y=13000, label = "ship")

enter image description here

ИЗМЕНИТЬ после КОММЕНТАРИИ

Для эффективности вы можете комбинировать аннотации, например:

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x = c(2,4,6,8), y=13000, label = c("two", "ship", "six", "boat"))