使用 melt 和 ggplot 的条形图
Barplots using melt and ggplot
我有一个这样的数据集。
> ds
domanda esito cella
22870 22870 B 3
22893 22893 R 4
16258 16258 P 2
14684 14684 P 2
12873 12873 B 1
12933 12933 B 2
12047 12047 R 2
22880 22880 B 3
11479 11479 P 3
20836 20836 B 3
我需要生成一个图表,其中 x 轴上有 "cella" 个元素(从 1 到 49,我只向您展示了其中的一部分)。对于每个 cella,我想要一个由三种颜色组成的条,具体取决于对应的 P、B、R 元素。
例如,在 cella 2 上,我想要一个长度为 4 的条,颜色为紫色(2 个单位)、蓝色(1 个单位)和红色(1 个单位)。
我知道我可以使用函数 melt
,然后使用 ggplot
(带有 ),但我没有得到我想要的。有人可以帮忙吗?
我尝试过的:
> this.col
[1] 2 1 3 3 2 2 1 2 3 2
从那个颜色文件开始(由 "esito" 列获得)我做了以下事情:
ds_som.m = melt(ds_som[,2:3],id=c("cella"))
ggplot(data=ds_som.m, aes(x=ds_som.m$cella, y=ds_som.m$value,
fill=ds_som.m$variable,col=this.col))+
geom_bar(stat = "identity")+
scale_fill_brewer(direction=-1)+
guides(fill = guide_legend(title = "Esiti", title.position = "top"))
我们可以试试
library(dplyr)
library(ggplot2)
ds[-1] %>%
group_by(cella) %>%
mutate(n =n()) %>%
unique() %>%
ggplot(., aes(x= cella, y=n, fill=esito)) +
geom_bar(stat='identity', position='dodge')
我有一个这样的数据集。
> ds
domanda esito cella
22870 22870 B 3
22893 22893 R 4
16258 16258 P 2
14684 14684 P 2
12873 12873 B 1
12933 12933 B 2
12047 12047 R 2
22880 22880 B 3
11479 11479 P 3
20836 20836 B 3
我需要生成一个图表,其中 x 轴上有 "cella" 个元素(从 1 到 49,我只向您展示了其中的一部分)。对于每个 cella,我想要一个由三种颜色组成的条,具体取决于对应的 P、B、R 元素。
例如,在 cella 2 上,我想要一个长度为 4 的条,颜色为紫色(2 个单位)、蓝色(1 个单位)和红色(1 个单位)。
我知道我可以使用函数 melt
,然后使用 ggplot
(带有 ),但我没有得到我想要的。有人可以帮忙吗?
我尝试过的:
> this.col
[1] 2 1 3 3 2 2 1 2 3 2
从那个颜色文件开始(由 "esito" 列获得)我做了以下事情:
ds_som.m = melt(ds_som[,2:3],id=c("cella"))
ggplot(data=ds_som.m, aes(x=ds_som.m$cella, y=ds_som.m$value,
fill=ds_som.m$variable,col=this.col))+
geom_bar(stat = "identity")+
scale_fill_brewer(direction=-1)+
guides(fill = guide_legend(title = "Esiti", title.position = "top"))
我们可以试试
library(dplyr)
library(ggplot2)
ds[-1] %>%
group_by(cella) %>%
mutate(n =n()) %>%
unique() %>%
ggplot(., aes(x= cella, y=n, fill=esito)) +
geom_bar(stat='identity', position='dodge')