ggplot分组条形图 [英] ggplot grouped bar chart

查看:1400
本文介绍了ggplot分组条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据集:

 年份生成的拒绝
1 2012 133118208 7256986
2 2013 289487598 49652610
3 2014 192232775 31765480
4 2015 40434968 2513930

我在尝试生成一个分组的条形图,该分组的条形图将在x轴上具有并且在y轴上具有数字刻度以显示每年被拒绝的生成的Vs。



我很困惑我应该怎样设定我的y轴?我还没有尝试过使用 spread()函数,因为我希望可能有一个更简单的方法

解决方案

首先,您必须按正确的格式安排数据以进行绘图:

  library(重新塑形2)
df1 < - melt(df,id =Year)

你可以使用 tidyr 包:

  library(tidyr)
df1 < - gather(df,variable,value,-Year)

这可能更容易如果你不熟悉 melt()



基本上它说:收集所有 df 中除之外的变量,调用新的键列变量和新值列

  library(ggplot2)
ggplot(df1,aes(Year,value))+
geom_bar(aes(fill = variable),position =dodge,stat =identity)

如果您更喜欢使用逗号分隔数千个数字:

  library(ggplot2)
library(scales)
ggplot(df1,aes(Year,value))+
geom_bar(aes(fill = variable),position =dodge,stat =identity)+
scale_y_continuous(name = 值,标签=逗号)


I have the following dataset:

  Year Generated Rejected
1 2012 133118208  7256986
2 2013 289487598 49652610
3 2014 192232775 31765480
4 2015  40434968  2513930

I am trying to generate a grouped bar chart that will have Year on the x axis and a numerical scale on the y axis to show the generated Vs rejected year-wise.

I am confused what I should set my y axis to? I have not tried using the spread() function yet, as I am hoping there might be an easier way

解决方案

First you have to arrange the data in the proper format for plotting:

library(reshape2)
df1 <- melt(df, id = "Year")

Or you could use the tidyr package:

library(tidyr)
df1 <- gather(df, variable, value, -Year)

Which may be easier to understand if you are not familiar with melt()

Basically, it says: "Gather all the variables in df except Year, calling the new key column variable and the new value column value"

library(ggplot2)
ggplot(df1, aes(Year, value)) +   
  geom_bar(aes(fill = variable), position = "dodge", stat = "identity")

If you prefer to format numbers with commas separating thousands:

library(ggplot2)
library(scales)
ggplot(df1, aes(Year, value)) +   
  geom_bar(aes(fill = variable), position = "dodge", stat = "identity") +
  scale_y_continuous(name = "Values", labels = comma)

这篇关于ggplot分组条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆