R在ygplot2中将Y轴设置为不同

时间:2015-07-31 22:46:39

标签: r ggplot2

我有一个包含4个变量的数据框:一个ID号(/(['"]?)((?:\\\1|.)+?)\1(,|$)/g ),一个学位类型(chr w / 2级Grad和Undergrad),一个学位年({{1 (年))和就业记录类型(factor w / 6级别。)

我想将这些数据显示为按年份计算的唯一身份证号码,作为6个就业记录类型的堆积区域图。因此,y轴上的ID号的数量,x轴上的度年数,x的值是该年的ID的数量,并且填充将处理记录类型。我在chr中使用factor

我使用了以下代码,但y轴不计算不同的ID:

ggplot2

我也尝试将RStudio设置为ggplot(AlumJobStatusCopy, aes(x=Degree.Year, y=Entity.ID, fill=Employment.Data.Type)) + geom_freqpoly() + scale_fill_brewer(palette="Blues", breaks=rev(levels(AlumJobStatusCopy$Employment.Data.Type))) ,但这也无效。我搜索了解决方案,因为它似乎是我编写y = Entity.ID代码的问题。

我还根据类似情节的例子尝试了以下代码:

y = ..count..

这似乎不起作用。我已经阅读了文档,并且我已经结束了。

编辑:

在找出问题的答案后,我意识到我实际上并没有使用Year变量的正确值。计数告诉我什么,因为我试图显示缺乏记录的增加和当前记录的下降。

我的数据集: 年,int,1960-2015 当前记录,num:当前总记录的百分比 No Record,num:非当前记录总数的百分比

每年的Ergo值有两个相应的百分比值。我现在使用2行而不是区域图,因为Y轴具有不同的值而不是计数函数,但我仍然希望填充曲线下的区域。我尝试使用Melt将数据从宽转换为长,但仍然无法填充两行。填充只是为了审美目的,因为我想为每个填充使用渐变,其中1填充比另一填充略轻。

这是我目前的代码:     ggplot(Alum,aes(Year))+     geom_line(aes(y = Percent.Records,color =" Percent.Records"))+     geom_line(aes(y = Percent.No.Records,color =" Percent.No.Records"))+     scale_y_continuous(标签=百分比)+ ylab('总记录百分比')+     ggtitle("活跃,生活校友就业记录")+     scale_x_continuous(breaks = seq(1960,2014,by = 5))

我还不能发布图片。

1 个答案:

答案 0 :(得分:4)

我认为您错过了汇总数据以获取在y轴上绘制数量的步骤。这是一个示例,其中一些玩具数据与您描述的类似:

# Make toy data with three levels of employment type
set.seed(1)
df <- data.frame(Entity.ID = rep(LETTERS[1:10], 3), Degree.Year = rep(seq(1990, 1992), each=10),
    Degree.Type = sample(c("grad", "undergrad"), 30, replace=TRUE),
    Employment.Data.Type = sample(as.character(1:3), 30, replace=TRUE))

# Here's the part you're missing, where you summarize for plotting 
library(dplyr)
dfsum <- df %>%
    group_by(Degree.Year, Employment.Data.Type) %>%
    tally()

# Now plot that, using the sums as your y values
library(ggplot2)
ggplot(dfsum, aes(x = Degree.Year, y = n, fill = Employment.Data.Type)) +
    geom_bar(stat="identity") + labs(fill="Employment")

结果可能会使用一些微调,但我认为这就是你的意思。这里,条形高度相等,因为玩具数据中的每年包括相同数量的ID;如果ID的数量变化,那么总的高度也会变化。 enter image description here

如果您不想在工作区中添加对象,只需在调用ggplot()时进行求和:

ggplot(tally(group_by(df, Degree.Year, Employment.Data.Type)),
    aes(x = Degree.Year, y = n, fill = Employment.Data.Type)) +
    geom_bar(stat="identity") + labs(fill="Employment")