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())
edit:
И вы можете произвестиэтот фрейм данных из вашего исходного фрейма данных, подобный этому
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
И оттуда вы можете просто растопить свой фрейм данных следующим образом:
library(reshape2)
df3 <- melt(df2)
df3
cat variable value
cat1 time_a 12.7
cat2 time_a 16.0
cat3 time_a 8.6
cat4 time_a 13.4
cat5 time_a 7.3
cat6 time_a 5.5
cat1 time_b 6.8
cat2 time_b 15.0
cat3 time_b 33.0
cat4 time_b 4.2
cat5 time_b 10.0
cat6 time_b 29.5
ggplot(data=df3, aes(x=cat, y=value, fill=variable)) +
geom_bar(stat="identity", position=position_dodge())