我有一个包含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))
我还不能发布图片。
答案 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的数量变化,那么总的高度也会变化。
如果您不想在工作区中添加对象,只需在调用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")