绘制平均%vs%rank(平均表现平均得分)

时间:2018-04-19 16:22:23

标签: r ggplot2 dplyr

想象一下有3个等级。物理,数学,化学。 总成绩为(物理+数学+化学/ 3)

在x轴上,我以%表示总成绩。所以最好的学生是1.00,最差的学生是0.00,中位数的学生是0.50。

在y轴上,我想绘制每个班级的总成绩%化妆品。

看看是否有任何变化取决于学生的表现好坏,以及不同级别的学生擅长哪些课程。

以下是我当前数据框的副本。

Observations: 269,049
Variables: 3
$ TotalRank <dbl> 0.00, 0.30, 0.30, 0.29, 0.21, 0.68, 0.22, 0.02, 0.13, 0.44, 0.02, 0.37, 0.42, 0.40, 0.43, 0.55, 0...
$ Class    <chr> "Chemistry", "Maths", "Maths", "Physics", "Maths", "Maths", "Physics", "Maths", "Chemistry"...
$ Value    <dbl> 0.34, 0.36, 0.36, 0.43, 0.41, 0.38, 0.41, 0.39, 0.34, 0.35, 0.35, 0.34, 0.34, 0.39, 0.33, 0.35, 0...

我的目标是制作一个如下图:

enter image description here

我的代码:

ggplot(DATAFRAME, aes(x = TotalRank, y = Value, fill = Class)) + 
  geom_area()

x轴似乎工作正常,但在y轴上它只是为每个x值加起来,而不是绘制那个点的平均值。

如何绘制每个x点的平均y值,分为让我们说100个箱子。

编辑:这就是我的情节的样子,请忽略值,因为它们就是一个例子。

enter image description here

这就是我构建数据帧的方式。

dataframe <- dataframe %>%
    mutate(ChemistryPc = round(Chemistry/TotalGrade, 2),
        MathsPc = round(Maths/TotalGrade, 2),
        PhysicsPc = round(Physics/TotalGrade, 2),
        TotalRank = round(percent_rank(TotalGrade), 2))


dataframe <- dataframe %>%
  gather(key = 'Class', value = 'Value', -TotalRank)

以下是值:

        Chemistry    Maths        Physics  TotalGrade 
1        47.63       20.41          70.31  138.35
2       142.88       95.25         163.29  401.42
3       142.88       95.25         163.29  401.42
4       170.10       77.11         145.15  392.36
5       138.35       65.77         136.08  340.20
6       229.06      161.03         210.92  601.01
7       142.88       68.04         136.08  347.00
8        86.18       52.16          83.91  222.25
9       102.06       77.11         120.20  299.37
10      174.63      122.47         195.04  492.14
11       74.84       47.63          92.99  215.46
12      154.22      115.67         183.70  453.59
13      163.29      111.13         204.12  478.54
14      181.44       99.79         188.24  469.47
15      161.03      127.01         197.31  485.35
16      190.51      120.20         231.33  542.04
17      165.56      124.74         201.85  492.15
18      254.01      131.54         219.99  605.54
19      258.55      174.63         240.40  673.58
20      233.60      154.22         247.21  635.03

1 个答案:

答案 0 :(得分:0)

解决了,我用过:

ggplot(dataframe, aes(x = TotalRank, y = ValuePc, fill = Class)) + 
  geom_area()

然后使用

elasticsearch {
  document_id => "%{key}"
  hosts => "localhost"
  index => "helloworld"
}

并得到了我的情节。

enter image description here