Почему так сложно сделать простой гистограмму в R? Как я могу легко превратить фрейм данных в барплот?

Это может сработать для вас (GNU sed):

sed -si '/#include/{s//& "newfile.h\n&/;:a;$!{n;ba}}' file1 file2 file....

или если память не является проблемой:

sed -si ':a;$!{N;ba};s/#include/& "newfile.h\n&/' file1 file2 file...
1
задан jay.sf 13 March 2019 в 16:11
поделиться

2 ответа

Минимальное решение, которое вы хотите, действительно существует в базе R.

Рассмотрим эти данные.

> head(dat, 3)
  Categories time.a time.b.
1  Category1  98.59   90.05
2  Category2 133.10  150.26
3  Category3  22.04   75.15

Участок:

barplot(t(dat[-1]), beside=TRUE, ylab="time")

Доходность

enter image description here [119] [1115 ]

Затем вы можете уточнить его, как хотите, например,

rownames(dat) <- 1:10
barplot(t(dat[-1]), beside=TRUE, xlab="Categories", ylab="time", col=2:3)
legend("topleft", c("time a", "time b"), col=2:3, pch=15)

, что дает

enter image description here

Данные

dat <- structure(list(Categories = structure(c(1L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 2L), .Label = c("Category1", "Category10", "Category2", 
"Category3", "Category4", "Category5", "Category6", "Category7", 
"Category8", "Category9"), class = "factor"), time.a = c(98.59, 
133.1, 22.04, 10.24, 17.12, 78.21, 115.41, 76.84, 176.09, 73.02
), time.b. = c(90.05, 150.26, 75.15, 7.07, 1.85, 49.03, 7.41, 
152.89, 139.64, 90.98)), class = "data.frame", row.names = c(NA, 
-10L))
0
ответ дан jay.sf 13 March 2019 в 16:11
поделиться

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

Я произвел что-то вроде того, что, я думаю, ты хочешь.

df <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
             time_type=c("a","a","a","a","a","a","b","b","b","b","b","b"),
             time=c(12.7, 16, 8.6, 13.4, 7.3, 5.5, 6.8, 15, 33, 4.2, 10, 29.5))


head(df) 
        cat   time_type   time
    1   cat1  a           12.7
    2   cat2  a           16.0
    3   cat3  a           8.6   
    4   cat4  a           13.4  
    5   cat5  a           7.3   
    6   cat6  a           5.5   
    7   cat1  b           6.8
    8   cat2  b           15
    9   cat3  b           33
   10   cat4  b           4.2
   11   cat5  b           10
   12   cat6  b           29.5

и для построения графика

ggplot(data=df, aes(x=cat, y=time, fill=time_type)) +
  geom_bar(stat="identity", position=position_dodge())

barplot_in_r

редактировать:

И вы можете создать этот фрейм данных из вашего исходного фрейма данных, как этот

df2 <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
                 time_a=c(12.7, 16, 8.6, 13.4, 7.3, 5.5),
                 time_b=c(6.8, 15, 33, 4.2, 10, 29.5))
head(df2)

    cat     time_a  time_b
1   cat1    12.7    6.8 
2   cat2    16.0    15.0    
3   cat3    8.6     33.0    
4   cat4    13.4    4.2 
5   cat5    7.3     10.0    
6   cat6    5.5     29.5    

И оттуда, вы можете просто растопить ваш фрейм данных так: ]

0
ответ дан Modriano 13 March 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: