繁体   English   中英

Plot 多列与 geom_bar()

[英]Plot multiple columns with geom_bar()

我最近开始在 R 中编程,我正在尝试使用 ggplot2 对 plot 几列进行编程。

我的数据框如下所示:

mydf <- data.frame(Names, Less, Equal, More)
mydf

    Names Less Equal More
1   Sarah    8    25    8
2   Mark    13    13   13
3   Peter   11    26    5

为了了解我是如何创建这个数据框的,“Less”看起来像这样:

[1]  8 13 11

我希望能够比较每个名字的分数,如果他们的分数更低、相等或更高。 在 x 轴上,我实际上想要 plot “更多”、“更少”和“相等”,每个名称都有不同的条形。 在 y 轴上,我想打印分数(例如 8、25...)。 我想为每个名称创建多个栏。

我已经尝试了几件事,但我只成功地在 y 轴上添加了一个值:

test <- ggplot(mydf, aes(x= Names, y= More)) +
geom_bar(stat = "identity") 

我感觉问题出在我的数据组织方式上,但我不确定。

您需要将数据更改为长格式,其中一列用于值,另一列用于标签:

    Names values label
1   Sarah    8    less
2   Mark    13    less
3   Peter   11    less
1   Sarah    25    equal
2   Mark    13    equal
3   Peter   26    equal
1   Sarah    8    more
2   Mark    13    more
3   Peter   5    more

那么代码将是

test <- ggplot(mydf, aes(x= label, y= values, fill=names)) +
  geom_bar(position="dodge",  stat="identity") 
test

这是一个例子: https://www.r-graph-gallery.com/48-grouped-barplot-with-ggplot2.html

您可以使用 data.table package 将数据融合为长格式。

library(data.table)

df <- melt(mydf, id.vars = "Names", variable.name = "category",
           value.name="scores")

如果你想要分组图表,你可以指定 position="dodge"。

ggplot(df, aes(x = category , y= scores, fill = Names)) +
  geom_bar(position="dodge", stat = "identity")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM