2015-07-20 2 views
0

Давайте использовать пример таблицу:Простая Круговая диаграмма из таблицы

structure(c(2, 8, 3, 4, 1, 2, 3, 5, 4, 7, 6, 4, 1), .Names = c("Mark", "Greg", 
              "Sonya", "Monica", "Tiana", "Arra", "Armin", "Hera", "Cyrus", "Pier", "Tina", "Hector", "Markus")) 

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

Номер 4 повторяется 3 раз, это означает, что у него будет наибольший процент/кусочек этой круговой диаграммы. Всего у нас 13 чисел, поэтому 4 представляет 23% круговой диаграммы.

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

Дополнительные вопросы: Было бы здорово, а если вы могли бы показать мне, как сделать диаграмму, как показано ниже:

Example

Edit:

> dput(head(sum_peaks_EOD) 
+) 
structure(c(2, 8, 3, 4, 1, 2), .Names = c("AT1G01050", "AT1G01080", 
"AT1G01090", "AT1G01320", "AT1G01470", "AT1G01800")) 
+1

Вы попробовали 'пирог (данные)'? второй график называется barplot 'barplot (matrix (data))' – rawr

+0

Да, я пробовал, но проблема в том, что меня не интересуют имена, которые у меня есть в таблице. Вопрос только в том, как часто встречаются числа от 1 до 8. Поэтому моя круговая диаграмма должна быть разделена только на 8 срезов. –

+4

поэтому вместо 'data' вы можете использовать' table (data) ' – rawr

ответ

1

Для вашего круговой диаграммы:

pie(table(dat)) 

Для вашей гистограммы, используя ggplot2:

dat <- as.data.frame(dat) 
dat$factor <-1 
ggplot(dat,aes(x=factor,fill=factor(dat))) + 
     geom_bar(binwidth=5) + 
     coord_flip() 

EDIT: в связи с тем, как as.data.frame() вызов работа, столбцом вы хотите фактор будет называться именем исходного вектора. Итак, если ваши данные называются sum_peaks_EOD:

+0

Гистограмма хорошо работает, например, но с использованием моего оригинального. Я получаю эту ошибку: 'Ошибка в sort.list (y): 'x' должен быть атомарным для 'sort .list ' Вы назвали' sort 'в списке? ' –

+0

У вас, вероятно, есть список, а не вектор - можете ли вы вызвать dput() на свои данные и отредактировать вопрос? – jeremycg

+0

Я отредактировал вопрос с моими исходными данными –