R中的堆积柱图
我想知道(如果可能的话)如何在R中绘制这样的图。R中的堆积柱图,r,plot,ggplot2,bar-chart,data-visualization,R,Plot,Ggplot2,Bar Chart,Data Visualization,我想知道(如果可能的话)如何在R中绘制这样的图。 例如,30人(x轴),工作近300-400小时(y轴),每个人在6项特定活动中分配的时间以彩色显示 示例数据: | People | Act 1 | Act 2 | Act 3 | Act 4 | Act 5 | Act 6 | |Person 1| 18 | 20 | 32 | 75 | 64 | 18 | |Person 1| 40 | 25 | 02 | 04 | 17
例如,30人(x轴),工作近300-400小时(y轴),每个人在6项特定活动中分配的时间以彩色显示 示例数据:
| People | Act 1 | Act 2 | Act 3 | Act 4 | Act 5 | Act 6 |
|Person 1| 18 | 20 | 32 | 75 | 64 | 18 |
|Person 1| 40 | 25 | 02 | 04 | 17 | 20 |
|Person 2| 58 | 45 | 32 | 75 | 64 | 18 |
|Person 3| 10 | 15 | 11 | 28 | 15 | 92 |
|Person 1| 11 | 11 | 02 | 05 | 04 | 08 |
我正在使用以下代码:
plot(table(data$worker),col=unique(data$worker))
(此代码为每个条提供了不同的颜色)
但是我找不到一种方法来根据我上面提到的标准给每个条形图上色。您想要一个堆叠的柱状图,显示每个活动类型在y轴上每人工作小时的绝对值(总数) 首先,按如下方式组织数据集:
person hours.worked activity
1 18 1
1 20 2
...
3 11 3
3 28 4
...
1 4 5
1 8 6
然后,执行以下操作:
#reproducible example (same as OP's data)
df = structure(list(person = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L),
hours.worked = c(18L, 20L, 32L, 75L, 64L,18L, 40L, 25L, 2L, 4L, 17L, 20L, 58L, 45L, 32L, 75L, 64L, 18L, 10L, 15L, 11L, 28L, 15L, 92L, 11L, 11L, 2L, 5L, 4L, 8L),
activity = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L)),
.Names = c("person", "hours.worked", "activity"),
class = "data.frame",
row.names = c(NA, -30L))
df$person = factor(df$person,levels=c(1,2,3)) #control person order in x axis (left to right)
df$activity = factor(df$activity,levels=c(6,5,4,3,2,1)) #control order of stacks within column (top to base)
library(ggplot2)
ggplot(data=df, aes(x=person,y=hours.worked,fill=activity)) +
geom_col(position="stack") +
scale_fill_manual(breaks = c(1,2,3,4,5,6), #control order of legend keys (top to bottom)
values = c("#F564E3","#619CFF","#00BFC4","#00BA38","#B79F00","#F8766D")) #control fill of legend keys and columns stacks (surprisingly, this will honor the order of factor levels instead of order of 'breaks')
有趣的是,这个示例情节显然是在R。。。