r - ggplot2 - 将列更改为日期类后绘制数据框子集时出错
问题描述
我有一个数据框df
,并试图facet_grid
用日期、用户、活动和剂量数据制作一些漂亮的图。
Date.Issued Date User Activity Dose
1 28/04/2021 13:19 28/04/2021 A Technologist PET 3.3098681
2 28/04/2021 08:59 28/04/2021 G Technologist PET 9.7787209
3 28/04/2021 08:58 28/04/2021 M Technologist PET 6.4040399
4 28/04/2021 08:58 28/04/2021 L Technologist PET 4.8086505
5 28/04/2021 08:58 28/04/2021 H Technologist PET 0.0000000
6 28/04/2021 08:44 28/04/2021 G Technologist NM 4.6328144
7 28/04/2021 08:43 28/04/2021 K Technologist NM 12.4208622
8 28/04/2021 08:43 28/04/2021 R Technologist NM 2.8641932
9 28/04/2021 08:42 28/04/2021 A Technologist NM 8.4690704
10 28/04/2021 08:31 28/04/2021 P Technologist PET 4.2168984
11 28/04/2021 08:23 28/04/2021 C Technologist PET 28.1236839
12 28/04/2021 08:23 28/04/2021 S Technologist PET 10.3116798
13 28/04/2021 08:11 28/04/2021 H Technologist PET 13.7067385
14 27/04/2021 09:17 27/04/2021 C Technologist PET 8.9209318
15 27/04/2021 09:12 27/04/2021 G Technologist NM 3.8493500
16 27/04/2021 09:11 27/04/2021 K Technologist NM 2.3508735
17 27/04/2021 09:11 27/04/2021 A Technologist NM 1.8516742
18 27/04/2021 09:10 27/04/2021 R Technologist NM 3.9221160
19 27/04/2021 09:07 27/04/2021 G Technologist PET 15.1844616
20 27/04/2021 08:51 27/04/2021 L Technologist PET 10.0322027
21 27/04/2021 08:16 27/04/2021 S Technologist PET 8.2122355
22 27/04/2021 08:16 27/04/2021 H Technologist PET 6.6248207
23 27/04/2021 08:16 27/04/2021 P Technologist PET 3.8532472
24 26/04/2021 13:00 26/04/2021 A Technologist PET 2.5060282
25 26/04/2021 09:30 26/04/2021 P Technologist PET 9.5917282
26 26/04/2021 09:17 26/04/2021 G Technologist PET 14.0576487
27 26/04/2021 08:53 26/04/2021 M Technologist PET 4.3697691
28 26/04/2021 08:52 26/04/2021 C Technologist PET 7.1182218
29 26/04/2021 08:27 26/04/2021 A Technologist NM 2.1964765
30 26/04/2021 08:26 26/04/2021 R Technologist NM 1.4743344
31 26/04/2021 08:25 26/04/2021 L Technologist NM 3.4398077
32 26/04/2021 08:25 26/04/2021 K Technologist NM 0.9920691
33 26/04/2021 08:24 26/04/2021 G Technologist NM 1.4903276
34 26/04/2021 08:24 26/04/2021 C Technologist NM 0.0000000
35 26/04/2021 08:20 26/04/2021 S Technologist PET 8.9420223
36 26/04/2021 08:01 26/04/2021 H Technologist PET 6.6264949
我的Date
列在 R 中不是日期格式,所以我使用as.Date
>Attach(df)
>Date
>[1] "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "28/04/2021" "27/04/2021" "27/04/2021" "27/04/2021" "27/04/2021"
[18] "27/04/2021" "27/04/2021" "27/04/2021" "27/04/2021" "27/04/2021" "27/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021" "26/04/2021"
[35] "26/04/2021" "26/04/2021"
>class(Date)
[1] "character"
>DateX <- as.Date(Date, "%d/%m/%Y")
>DateX
[1] "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-28" "2021-04-27" "2021-04-27" "2021-04-27" "2021-04-27"
[18] "2021-04-27" "2021-04-27" "2021-04-27" "2021-04-27" "2021-04-27" "2021-04-27" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26" "2021-04-26"
[35] "2021-04-26" "2021-04-26"
>class(DateX)
[1] "Date"
现在,我使用新创建的 ggplot 代码DateX
:
>ggplot(df, aes(x=DateX, y=Dose, group = 1)) + geom_bar(stat="identity") + facet_grid(Activity~User)
现在我想将我的数据子集化df
并只绘制一些User
数据
>ggplot(data = (subset(df,User %in% c("A" , "C", "G", "H"))), aes(x=DateX, y=Dose, group = 1)) + geom_bar(stat="identity") + facet_grid(Activity~User)
但是R给出了这个错误
Error: Aesthetics must be either length 1 or the same as the data (19): x
Run `rlang::last_error()` to see where the error occurred.
我哪里错了?子集扰乱了代码,但我无法弄清楚。抱歉,如果此布局不理想 - 仍然掌握此站点!谢谢 :)
解决方案
问题是您正在使用两个数据源:DateX
和df
.
开始时,DateX
长度为 36,并且df
有 36 行。不幸的是,在您对数据进行子集化后,df
现在有 19 行,而DateX
长度仍为 36。
有几种方法可以解决这个问题,但如果可能的话,我建议将 using the external 更改DateX
为 using Date
,固定在框架中。
df$Date <- as.Date(df$Date, format='%d/%m/%Y')
ggplot(data = (subset(df,User %in% c("A" , "C", "G", "H"))), aes(x=Date, y=Dose, group = 1)) +
geom_bar(stat="identity") +
facet_grid(Activity~User)
数据
df <- structure(list(Date.Issued = c("28/04/2021 13:19", "28/04/2021 08:59", "28/04/2021 08:58", "28/04/2021 08:58", "28/04/2021 08:58", "28/04/2021 08:44", "28/04/2021 08:43", "28/04/2021 08:43", "28/04/2021 08:42", "28/04/2021 08:31", "28/04/2021 08:23", "28/04/2021 08:23", "28/04/2021 08:11", "27/04/2021 09:17", "27/04/2021 09:12", "27/04/2021 09:11", "27/04/2021 09:11", "27/04/2021 09:10", "27/04/2021 09:07", "27/04/2021 08:51", "27/04/2021 08:16", "27/04/2021 08:16", "27/04/2021 08:16", "26/04/2021 13:00", "26/04/2021 09:30", "26/04/2021 09:17", "26/04/2021 08:53", "26/04/2021 08:52", "26/04/2021 08:27", "26/04/2021 08:26", "26/04/2021 08:25", "26/04/2021 08:25", "26/04/2021 08:24", "26/04/2021 08:24", "26/04/2021 08:20", "26/04/2021 08:01"), Date = structure(c(18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18745, 18744, 18744, 18744, 18744, 18744, 18744, 18744, 18744, 18744, 18744, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743, 18743), class = "Date"), User = c("A", "G", "M", "L", "H", "G", "K", "R", "A", "P", "C", "S", "H", "C", "G", "K", "A", "R", "G", "L", "S", "H", "P", "A", "P", "G", "M", "C", "A", "R", "L", "K", "G", "C", "S", "H"), Activity = c("Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist PET", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist NM", "Technologist PET", "Technologist PET"), Dose = c(3.3098681, 9.7787209, 6.4040399, 4.8086505, 0, 4.6328144, 12.4208622, 2.8641932, 8.4690704, 4.2168984, 28.1236839, 10.3116798, 13.7067385, 8.9209318, 3.84935, 2.3508735, 1.8516742, 3.922116, 15.1844616, 10.0322027, 8.2122355, 6.6248207, 3.8532472, 2.5060282, 9.5917282, 14.0576487, 4.3697691, 7.1182218, 2.1964765, 1.4743344, 3.4398077, 0.9920691, 1.4903276, 0, 8.9420223, 6.6264949)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36"), class = "data.frame")
推荐阅读
- jenkins - 每次重新启动Tomcat时都会丢失会话
- elasticsearch - Elasticsearch 获取在前 n 个单词中找到查询的结果
- java - Should I check for parity of a number in a different way?
- xamarin.forms - Xamarin.Forms.Application.Current.MainPage 为空
- html - 使用 XPath 匹配除一个之外的所有元素和文本
- git - 推送子树更改远程提交哈希
- r - Rshiny:从分组复选框列表中提取选中的值
- excel - 如何计算一个单元格中包含特定单词的固定范围内的所有行,并且其他两个单元格的总和大于 const?
- npm - 'npm 错误!无法从“android”安装,因为它不包含 package.json 文件。\n' +
- angular - 如何在 Three.js 中更改 AxesHelper xyz 线宽并添加箭头点