2017-02-21 7 views
-1

Я новичок в R и пытаюсь создать гистограмму с процентами для разных групп категориальных переменных (степени). Вот код, я работаю с до сих пор:Гистограмма с процентами и в меток графов с использованием ggplot2

graph_data <- gss %>% 
      group_by(degree, owngun) %>% 
      summarise(total = n()) %>% 
      ungroup() %>% 
      mutate(percent = total/57061)  

     ggplot(graph_data, aes(x=degree, fill=owngun, y=percent) + 
      geom_bar(stat="identity") + 
      geom_text(size = 3, position = position_stack(vjust = 0.5)) 

Первая часть работы, и я могу создать новую переменную с процентами gunowners. Тем не менее, когда я запускаю вторую часть графика переменных, я получаю следующее сообщение об ошибке:

> ggplot(aes(x=degree, fill=owngun, y=percent) + 
     + geom_bar(stat="identity") 
     + ggplot(graph_data, aes(x=degree, fill=owngun, y=percent) + 
     Error: unexpected symbol in: 
     " geom_bar(stat="identity") 
     ggplot" 
     > geom_bar(stat="identity") + 
     + geom_text(size = 3, position = position_stack(vjust = 0.5)) 
     Error in position_stack(vjust = 0.5) : unused argument (vjust = 0.5) 
+1

в закрытом скобке отсутствует 'ggplot (aes())' – beetroot

ответ

1

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

ggplot(graph_data, aes(x=degree, y=percent, fill=owngun)) + geom_bar(stat="identity") + geom_text(size = 3, position = position_stack(vjust = 0.5))

Чтобы расширить на то, что было неправильно, вы определили ggplot() дважды. Вам нужно только когда-либо делать это один раз. ggplot() определяет «глобальные» параметры для диаграммы. Вы также повторяли geom_bar() два раза, я не знаю, вызвало бы это ошибку, но вам, разумеется, нужен только один экземпляр. Ваши круглые скобки были неправильными для обеих линий ggplot(), вам не хватало второй «)» оба раза, что само по себе могло бы привести к тому, что график не будет работать.

+0

Спасибо, используя ваши предложения, я внесла некоторые изменения и смог получить код для работы: – Christina

+0

@Christina Согласно вашему комментарию, ответ HenryRice помог решить вашу проблему. Затем вы должны рассмотреть [Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone-answers). – Uwe

0

Спасибо,

Я сделал некоторые изменения, используя ваши предложения и был в состоянии получить код для работы, используя следующие:

ggplot(graph_data, aes(x=degree, y=percent, fill=owngun, label=percent)) + 
     geom_bar(stat="identity") + 
     geom_text(size = 3, position="stack") 

Оставшийся Единственная проблема в том, что текст располагается в местах, что затрудняет чтение. Я буду работать над этим.

+0

Помимо того, что [ответ Генри Райса] (http://stackoverflow.com/a/42357529/3817004) решил вашу проблему (согласно вашему собственному комментарию), это довольно бесполезно для других пользователей SO, которые вы публикуете собственный ответ, поскольку вы не предоставили никаких данных для воспроизведения вашей проблемы и окончательного решения в своем ответе. – Uwe

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