我正在使用ggplot2制作条形图,并且无法沿x轴获得正确的年份

时间:2018-01-11 00:14:51

标签: r ggplot2

我正在使用ggplot2制作每年按性别划分的参与人数的条形图。如果我有14年的时间,我希望每年有2个酒吧,对应于那一年的男性和女性人数。我不是每年都沿着x轴前进。我认为数据正在被分类。我尝试使用scale_x_date更改bin宽度,但仍然卡住了。 你能帮我弄清楚如何在我的图表中获得每年的数据吗?

例如,这是我2004 - 2017年的数据:

year=c(2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017)
gender=c("male" , "female")

参与者每年分别按性别,男性和女性分类:

Participants=c(1307,443,1847,630,2109,765, 1824,691,2250,952,3123,1421,4097,1904,6415,3284,8788,4678,11581,6694,13141,8478,16389,10575,20990,13811,26951,19729)
data=data.frame(year,gender,Participants)

以下是我试图制作情节的方法:

MyPlot <- ggplot(data, aes(fill=gender, y=Participants, x=year)) + 
                 geom_bar(position="dodge", stat="identity",width = .8)

print(MyPlot + ggtitle("Annual Number of Participants by Gender"))

在x轴上,标记了2006年,2010年,2014年和2018年,条形图对应于两年的数据。我想要每年的数据,包括条形和x轴上的刻度。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

参与者多于多年,因此您没有明确的数据框设计作为ggplot的输入。

从这里开始: 阅读:https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html

关键是:

Each variable forms a column.
Each observation forms a row.
Each type of observational unit forms a table.

然后,一旦你有一个tibble /数据框架,你的ggplot2代码应该可以正常工作。我会杀死width =选项,直到你运行它为止。