首页 > 解决方案 > 使用分类数据创建折线图

问题描述

试图在检查年份显示“成绩”,而计数只是数据框中的观察结果。

创建快速表:

table(mydata1$Grade,mydata1$Inspection.Year)

创建快速条形图:

ggplot(mydata1, aes(fill=Grade , x=Inspection.Year)) +
  geom_bar()

我想用折线图做同样的事情,但没有运气

ggplot(mydata1, aes(fill=Grade , x=Inspection.Year)) +
  geom_line()

有什么想法吗?

谢谢!

标签: rggplot2

解决方案


假设您的数据如下所示:

mydata1 = data.frame(
Inspection.Year=sample(2000:2005,100,replace=TRUE),
Grade=sample(LETTERS[1:3],10,replace=TRUE))

您需要计算计数并将它们绘制在 y 轴上,如下所示:

library(dplyr)

mydata1 %>% count(Inspection.Year,Grade)
# A tibble: 17 x 3
   Inspection.Year Grade     n
             <int> <fct> <int>
 1            2000 A        11
 2            2000 B         6
 3            2000 C         1
 4            2001 A         8

并绘制这个:

mydata1 %>% count(Inspection.Year,Grade) %>%
ggplot()+geom_line(aes(x=Inspection.Year,y=n,col=Grade))

或者类似于 geom_bar 中的“填充”,您设置 y=1,并使用 stat_summary 对每个年级/年的 1 求和,这将为您提供 n:

ggplot(mydata1, aes(col=Grade , x=Inspection.Year,y=1))+ stat_summary(geom="line",fun.y=sum)

两者都给出了下面的图:

在此处输入图像描述


推荐阅读