2015-01-23 6 views
1

Я пытаюсь создать довольно простую гистограмму и для ясности добавлять значения поверх каждой строки (вместо использования масштабированной оси).geom_text меняет мой текст

Это мой код:

pbias <- ggplot(PSS.diff.means, aes(x=Control, y=PSS, ymax=37, fill=Modality)) + 
      theme_bw() + 
      theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
       axis.line = element_blank(), axis.text.y=element_blank(), axis.text.x=element_blank(), axis.ticks=element_blank(), axis.title = element_blank(), 
       legend.justification = 'left') + 
      geom_bar(position = "dodge", stat='identity') + 
      scale_fill_manual(values=c("lightblue","orange")) + 
      coord_cartesian() + 
      ggtitle("Normalized PSS values indicate threat bias per condition") 

pbias + geom_text(aes(label=round(PSS,2), colour=Modality), hjust=-.2) + coord_flip() 

и это то, что я получаю:

http://i.stack.imgur.com/MxiIQ.png

Я пытаюсь исправить две вещи щипая всякие вещи в geom_text(), но я ничего не получаю. Во-первых, я не могу заставить значения находиться на правильных позициях, так как я хочу, чтобы они находились в середине их соответствующих баров, а не на позиции переменной группировки. Во-вторых, почему-то моя цветовая схема перевернута в geom_text, хотя мне кажется, что я использую ту же переменную, которую я использовал для определения цвета заливки. Есть идеи?

Вот dataframe я использовал:

structure(list(Modality = structure(c(1L, 2L, 1L, 2L), contrasts = structure(c(-1,1), .Dim = c(2L, 1L), .Dimnames = list(c("0", "1"), NULL)), .Label = c("Visual","Tactile"), class = "factor"), Control = structure(c(1L, 1L,2L, 2L), contrasts = structure(c(-1, 1), .Dim = c(2L, 1L), .Dimnames = list(c("0", "1"), NULL)), .Label = c("Comparison", "Pain control"), class = "factor"), PSS = c(8.22627487231047, 1.37218085266906,5.93659638506416, 33.4255762835254)), .Names = c("Modality","Control", "PSS"), row.names = c(NA, -4L), class = "data.frame") 
+0

Опубликуйте data.frame 'PSS.diff.means' (вы можете использовать' dput (PSS.diff.means) ', а затем вставить результат этого) – arvi1000

+0

Ваш первый вопрос, вероятно, является дубликатом [этого] (http: // stackoverfl ow.com/q/26660525/324364). Для второго вы устанавливаете ручную шкалу для заполнения, но не для цвета. – joran

+0

спасибо @joran вторая часть отработан прекрасный. Во-первых, я попробовал добавить group = Control в aes() fuction в geom_text, но это не сработало (не удалось найти переменную, даже если я специально добавил, к какому файлу данных нужно смотреть). –

ответ

0

Это прекрасно работает для меня, так же, как я описал, и, как указано в дубликате я указал:

pbias + 
    geom_text(aes(label=round(PSS,2), colour=Modality),position = position_dodge(0.9)) + 
    scale_color_manual(values=c("lightblue","orange")) + 
    coord_flip() 

enter image description here

+0

Спасибо! Две ошибки, которые я сделал: 1) Я использовал position = "dodge", а не функцию position_dodge (не знал, что было бы иначе, подумал, что функция должна была просто немного изменить его). 2) Групповая вещь не нужна, и это все еще был частью моего кода. –

Смежные вопросы