Я обнаружил, как мне кажется, ошибку в использовании geom_text в ggplot2, и мне интересно, есть ли у кого-нибудь обходной путь / может указать, что я делаю неправильно.
Рассмотрим следующий пример кода:
library(ggplot2)
Treatment <- rep(c('C','T'),3)
Group <- rep(c('A','B','C'),each=2)
Response <- c(0.22894321, 0.23391813, 0.92256514, 0.92705167, 0.05982670, 0.09667674)
Differences <- c('+0pts', '+0pts', '+0pts', '+0pts', '+4pts', '+4pts')
df <- data.frame(Treatment, Group, Response, Differences)
ydef <- c(0.03, 0.03, 0.2)
hist <- ggplot(df, aes(x=Group, y=Response, fill=Treatment, stat="identity"))
hist + geom_bar(position = "dodge") + geom_text(aes(label = Differences,y=ydef))
Если это работает для вас так же, как и для меня - при использовании самых последних версий ggplot2 и R 2.12.2 - в группах B и C должно быть по два текстовых плавающих предмета, разнесенных на равные расстояния друг от друга. Очевидно, это не то, что мы хотим. Теперь измените ydef так, чтобы
ydef <- c(0.03, 0.03, 0.03)
перезапустите сценарий, описанный выше, и проблема решена - у каждой группы теперь есть только один текстовый плавающий объект, соответствующий различиям (или, точнее, два, расположенные точно друг над другом). Как это имеет смысл? Я использовал эту базовую структуру в довольно крупномасштабном приложении, и у меня не было никаких проблем, пока я не добрался до этого конкретного примера с этими конкретными числами.
Частично проблема может заключаться в том, что я создаю «Различия», добавляя его в виде столбца во фрейм данных и помещая этот текст в диаграмму с помощью geom_text. Если бы был способ сделать то же самое, используя вектор только с тремя символами, я уверен, что это решило бы проблему.
Короче (1) помогите пожалуйста! и (2) здесь потенциально интересная ошибка для рассмотрения сообществом ggplot2.
Ура,
Аарон