首页 > 解决方案 > 如何使用 R 中的 ggplot2 在任何给定时间绘制多个数量的平均值?

问题描述

我有一个整洁的数据格式的数据,有以下列

剧集 - 否 - 奖励

对于每个Episodes,都有几个不同No的值,每个值都有一个Reward值。

我想在 R中的任何给定条件下绘制 s 上的Reward平均值。NoEpisodesggplot2

但是,我似乎无法弄清楚如何在aes函数内部进行平均,因为ggplot2只用aes.

不是:那里的计算值是我要绘制的图形的 y 轴。

编辑:这是数据:

structure(list(Episodes = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), No = c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 
16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 
29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 
42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 
45L, 46L, 47L, 48L, 49L, 50L), State_X = c(18.7093742044436, 
40.6067940577646, 32.9659149782672, 47.487897550659, 1.48581200994568, 
43.394035700008, 37.0446065177918, 23.3957423646241, 37.3351332717916, 
17.6376866510586, 44.3385422056521, 29.0046608260769, 16.6036604592988, 
23.3477936445144, 42.4064616811565, 27.9668148970621, 17.5217521338885, 
34.273869056307, 32.7027919246833, 16.2092835118859, 1.6917564288412, 
43.1899409658426, 11.8872272375605, 23.3728773795576, 6.71734205689504, 
18.0920372945049, 28.3064246386167, 20.176060323342, 16.2970246274737, 
20.1063348064267, 18.2611841038841, 12.0062262764544, 33.053928954166, 
35.7972733743772, 9.60041922554555, 20.4191076596537, 37.8887413411622, 
46.3258390853826, 23.0183767408587, 12.2663965612003, 7.12068096413166, 
23.9976544266837, 21.3881421286412, 2.20867303496362, 19.2556268082423, 
15.454184932814, 16.8168160547249, 29.9391719722763, 3.3175354464604, 
49.1096186936325, 1.28481295678992, 41.7485591887896, 13.5582312279783, 
23.2121220244236, 5.09832394223156, 18.9057863207601, 27.7188368464511, 
19.2199236745104, 15.5787143185644, 20.7037341170736, 16.9047183103967, 
10.743809396259, 34.5014078585458, 34.390181114343, 10.5934821117067, 
18.754971775866, 38.4847877943373, 46.4990175641225, 21.4804891172612, 
13.1280236536865, 7.09751612798119, 23.5086787641723, 21.9276127983697, 
1.68693876118632, 19.7021213711051, 16.2495077037166, 17.1979521926821, 
31.2713683932615, 3.62089590339919, 47.9806522661229, 18.2459815279365, 
42.2096367957902, 32.4469405947441, 47.4896455974166, 49.9926203882076, 
44.1110702026222, 36.1133943075761, 22.6970883666628, 38.7874295014527, 
19.1841450248776, 44.2390997940226, 30.5483362509829, 17.8350320373601, 
23.8659571121659, 41.5454750047292, 26.9610720686875, 17.9084731166549, 
33.8924617607462, 31.0693420715276, 16.0791596661715), State_Y = c(2.10670021664302, 
11.1987138304838, 12.4653021197377, 43.8384296211283, 9.60645975599412, 
21.177883533056, 3.82431658162667, 43.6007748728616, 11.4177688406298, 
32.6453240510686, 11.641899639376, 14.6899726062071, 26.4124044503705, 
16.7142813642333, 20.7066553793618, 7.53333169815473, 12.1435966937969, 
49.9109441643256, 25.0787910734719, 37.4878784603231, 26.3036570009026, 
46.1085882302073, 32.3364092438023, 17.2251319694974, 16.5315474457949, 
11.627286703136, 47.3515097630274, 28.5846576631324, 14.0333009376113, 
30.058666195638, 8.10007993908803, 1.55193714266211, 30.8116286796259, 
42.3399184218983, 43.4920108658969, 10.6294682487154, 34.2783076649517, 
37.4000951625201, 49.8142610424699, 11.253222235134, 20.5270547363819, 
2.37367773759773, 9.76589578564933, 8.48114486363665, 27.2260353154748, 
4.39687084162783, 43.6837428557575, 26.9345466576709, 41.3957267995571, 
38.3227655543644, 28.1345420827404, 46.9214149769415, 32.5229144250222, 
18.0947333016685, 16.233664282638, 10.3557880305907, 47.9224724525057, 
29.5032383165429, 15.6080680017263, 28.6260828899101, 8.1931756750714, 
2.13715784924703, 31.4485451385792, 41.3217341967841, 44.3508004224518, 
10.0482474806126, 35.6393912724624, 39.2971428056498, 0.893498666851452, 
12.66037923506, 19.7859056363164, 3.48213019969207, 11.2543401449227, 
7.81026485184024, 28.17972713554, 5.86850108793545, 45.3219492170268, 
26.7971936682688, 40.7549680162212, 37.6688067792898, 1.92479761659784, 
11.9742927989402, 12.6950191996932, 42.2394837523002, 8.94704522045347, 
19.9640357570667, 3.74025708045178, 44.0642464198521, 12.398551503116, 
33.042188469232, 12.8621491073451, 14.6224583501806, 25.6862906940086, 
15.3414076419979, 19.646778377363, 7.80710567760991, 10.3174635379371, 
1.31019280660633, 25.7143017893158, 35.6767351638292), State_W = c(5.32448563080006, 
0.100991637526872, 5.74573709920522, 3.7013996861716, 3.5760780834577, 
6.08920621932823, 0.973849544034949, 3.66405162022307, 5.91553078555763, 
2.35468022740879, 1.24424403364234, 5.61888897970341, 6.07954497407006, 
5.92266209341291, 1.68176260977981, 3.63909205635671, 4.76075990964847, 
1.33169510959309, 2.35593256130904, 3.77233453076143, 1.43604840237031, 
3.95956636531225, 0.869151675322198, 5.98705643079804, 1.85947765337379, 
1.18246731347351, 4.79700502580722, 4.26010121079535, 2.63398433177756, 
5.52047899957477, 2.02957568172627, 4.17893465707887, 1.18445680018291, 
3.83538680989466, 5.8213885420905, 3.88009919835194, 2.0121930543809, 
2.5577863275388, 3.17440341538203, 2.32841705286064, 2.91091797464727, 
4.42259065455902, 2.66608737811585, 4.62202682102581, 0.711877066731294, 
0.759373992995859, 0.994561527382153, 2.18610601684904, 0.173105995855319, 
1.01277321358164, 1.45075702157313, 1.31924624397161, 4.85704065973835, 
4.53835576090424, 4.51587705123459, 5.05871727671714, 2.78673074378821, 
0.881537541524641, 0.959347400859975, 5.36656049318995, 1.35806621611808, 
1.87657866332397, 5.09138418677616, 2.55035361478653, 0.557898038112599, 
2.80027169500674, 0.58575427228993, 2.06119770366566, 3.35459211865804, 
0.685110316501696, 5.10849180845686, 0.609948318604784, 1.57105135296906, 
2.70397219822088, 1.73249939666474, 2.17107276909608, 2.39544403295095, 
4.71814474256256, 2.50987488717608, 4.12401537616685, 2.7437779422579, 
1.49970394015597, 1.1299641105865, 5.09205358168502, 4.09004455547026, 
5.15363071148939, 3.89781020346439, 1.5688648901111, 1.8970865570576, 
5.39911167800236, 3.21423502554127, 0.0950217626282708, 3.77141275556043, 
5.02928598083169, 5.08925525599114, 0.845545848383275, 4.68809581225652, 
0.102492096256536, 2.42223369860203, 4.7555020334366), Action = c(1L, 
0L, 0L, 0L, 0L, 2L, 1L, 2L, 0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 1L, 
2L, 2L, 1L, 0L, 0L, 2L, 2L, 1L, 0L, 2L, 0L, 2L, 1L, 2L, 1L, 2L, 
0L, 2L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 0L, 2L, 0L, 1L, 1L, 2L, 1L, 2L, 0L, 2L, 2L, 0L, 0L, 0L, 
1L, 1L, 0L, 1L, 1L, 2L, 0L, 1L, 0L, 1L, 0L, 1L, 2L, 0L, 2L, 1L, 
1L, 1L, 2L, 0L, 0L, 0L, 0L, 2L, 1L, 0L, 2L, 1L, 0L, 1L, 2L, 0L, 
2L, 0L, 2L), Reward = c(-283L, -384L, -384L, -384L, -384L, -485L, 
-586L, -586L, -485L, -384L, -384L, -485L, -384L, -384L, -384L, 
-485L, -485L, -485L, -485L, -485L, -384L, -384L, -384L, -384L, 
-485L, -384L, -384L, -384L, -485L, -384L, -485L, -485L, -485L, 
-485L, -485L, -485L, -485L, -384L, -384L, -384L, -384L, -182L, 
-182L, -283L, -384L, -485L, -384L, -384L, -283L, -384L, -384L, 
-384L, -485L, -485L, -384L, -283L, -283L, -283L, -485L, -485L, 
-586L, -586L, -687L, -687L, -586L, -485L, -586L, -485L, -485L, 
-485L, -485L, -485L, -485L, -485L, -384L, -485L, -384L, -384L, 
-384L, -384L, -283L, -283L, -283L, -283L, -283L, -283L, -182L, 
-182L, -182L, -283L, -283L, -283L, -283L, -182L, -81L, 20L, 20L, 
-81L, -81L, -283L)), row.names = c(NA, -100L), class = c("data.table", 
"data.frame"), sorted = "Episodes")

标签: rggplot2

解决方案


你可以使用类似的东西

library(tidyverse)

df %>% 
  mutate(Episodes = as.factor(Episodes)) %>% # Making the Episodes column as factor 
  ggplot(aes(x = No, y = Reward, fill = Episodes)) + 
  geom_col() # To have bar plot

在此处输入图像描述

df %>% 
  mutate(Episodes = as.factor(Episodes)) %>% 
  ggplot(aes(x = No, y = Reward, color = Episodes)) + 
  geom_line()

#To have average over the numbers use
df %>% 
  group_by(No) %>% 
  mutate(Reward_ave = mean(Reward)) %>% 
  mutate(Episodes = as.factor(Episodes)) %>% 
  ggplot(aes(x = Episodes, y = Reward_ave)) + 
  geom_line()

推荐阅读