R ggplot2几何图形区域()不工作

R ggplot2几何图形区域()不工作,r,debugging,ggplot2,R,Debugging,Ggplot2,我的数据集如下所示: 头(): dput()50行的头部样本: structure(list(ViolDesc = c("Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When

我的数据集如下所示:

头():

dput()50行的头部样本:

structure(list(ViolDesc = c("Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How"), RESULTDTTM = structure(c(1173052800, 
1183939200, 1184544000, 1184630400, 1185148800, 1185494400, 1185753600, 
1185840000, 1186444800, 1186963200, 1187049600, 1187136000, 1187654400, 
1187827200, 1187913600, 1188172800, 1188432000, 1188864000, 1188950400, 
1189036800, 1189468800, 1189641600, 1189987200, 1190246400, 1190332800, 
1190764800, 1190851200, 1190937600, 1191283200, 1191369600, 1191542400, 
1192406400, 1192492800, 1192665600, 1193011200, 1193270400, 1193702400, 
1193788800, 1193875200, 1193961600, 1194220800, 1194307200, 1194393600, 
1194480000, 1194566400, 1194912000, 1195084800, 1195171200, 1195430400, 
1195516800), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    count = c(1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
    1L, 3L, 1L, 1L, 3L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 1L, 1L, 3L, 1L, 1L, 1L, 2L, 1L, 2L, 3L, 2L, 2L, 
    2L, 1L, 1L, 3L, 3L, 1L, 1L, 2L), cumsum = c(1L, 2L, 3L, 6L, 
    9L, 10L, 11L, 12L, 13L, 15L, 17L, 18L, 19L, 22L, 23L, 24L, 
    27L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 
    40L, 42L, 43L, 44L, 47L, 48L, 49L, 50L, 52L, 53L, 55L, 58L, 
    60L, 62L, 64L, 65L, 66L, 69L, 72L, 73L, 74L, 76L)), .Names = c("ViolDesc", 
"RESULTDTTM", "count", "cumsum"), row.names = c(NA, 50L), class = "data.frame")
structure(list(ViolDesc = c("Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's."
), RESULTDTTM = structure(c(1342656000, 1344556800, 1345680000, 
1350518400, 1350950400, 1351036800, 1354147200, 1360022400, 1360195200, 
1363305600, 1365638400, 1366070400, 1369872000, 1369958400, 1376265600, 
1376524800, 1383696000, 1385942400, 1388016000, 1389744000, 1396224000, 
1400803200, 1401235200, 1403568000, 1405641600, 1406505600, 1407283200, 
1407801600, 1410739200, 1411603200, 1411689600, 1413849600, 1414368000, 
1415145600, 1416787200, 1417651200, 1418860800, 1420675200, 1424908800, 
1425254400, 1425427200, 1425600000, 1426118400, 1428451200, 1429056000, 
1430438400, 1430870400, 1433376000, 1438214400, 1438819200), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), count = c(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, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L), cumsum = c(92L, 
93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, 101L, 102L, 103L, 104L, 
105L, 106L, 107L, 108L, 109L, 110L, 111L, 112L, 113L, 114L, 115L, 
116L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, 124L, 125L, 126L, 
127L, 128L, 129L, 130L, 131L, 132L, 134L, 135L, 136L, 137L, 138L, 
139L, 140L, 142L, 143L)), .Names = c("ViolDesc", "RESULTDTTM", 
"count", "cumsum"), row.names = 15178:15227, class = "data.frame")
dput()50行的尾部示例:

structure(list(ViolDesc = c("Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How", "Adequate Handwashing/Where/When/How", 
"Adequate Handwashing/Where/When/How"), RESULTDTTM = structure(c(1173052800, 
1183939200, 1184544000, 1184630400, 1185148800, 1185494400, 1185753600, 
1185840000, 1186444800, 1186963200, 1187049600, 1187136000, 1187654400, 
1187827200, 1187913600, 1188172800, 1188432000, 1188864000, 1188950400, 
1189036800, 1189468800, 1189641600, 1189987200, 1190246400, 1190332800, 
1190764800, 1190851200, 1190937600, 1191283200, 1191369600, 1191542400, 
1192406400, 1192492800, 1192665600, 1193011200, 1193270400, 1193702400, 
1193788800, 1193875200, 1193961600, 1194220800, 1194307200, 1194393600, 
1194480000, 1194566400, 1194912000, 1195084800, 1195171200, 1195430400, 
1195516800), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    count = c(1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
    1L, 3L, 1L, 1L, 3L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 1L, 1L, 3L, 1L, 1L, 1L, 2L, 1L, 2L, 3L, 2L, 2L, 
    2L, 1L, 1L, 3L, 3L, 1L, 1L, 2L), cumsum = c(1L, 2L, 3L, 6L, 
    9L, 10L, 11L, 12L, 13L, 15L, 17L, 18L, 19L, 22L, 23L, 24L, 
    27L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 
    40L, 42L, 43L, 44L, 47L, 48L, 49L, 50L, 52L, 53L, 55L, 58L, 
    60L, 62L, 64L, 65L, 66L, 69L, 72L, 73L, 74L, 76L)), .Names = c("ViolDesc", 
"RESULTDTTM", "count", "cumsum"), row.names = c(NA, 50L), class = "data.frame")
structure(list(ViolDesc = c("Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's.", 
"Washing fruits and veg's.", "Washing fruits and veg's.", "Washing fruits and veg's."
), RESULTDTTM = structure(c(1342656000, 1344556800, 1345680000, 
1350518400, 1350950400, 1351036800, 1354147200, 1360022400, 1360195200, 
1363305600, 1365638400, 1366070400, 1369872000, 1369958400, 1376265600, 
1376524800, 1383696000, 1385942400, 1388016000, 1389744000, 1396224000, 
1400803200, 1401235200, 1403568000, 1405641600, 1406505600, 1407283200, 
1407801600, 1410739200, 1411603200, 1411689600, 1413849600, 1414368000, 
1415145600, 1416787200, 1417651200, 1418860800, 1420675200, 1424908800, 
1425254400, 1425427200, 1425600000, 1426118400, 1428451200, 1429056000, 
1430438400, 1430870400, 1433376000, 1438214400, 1438819200), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), count = c(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, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L), cumsum = c(92L, 
93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, 101L, 102L, 103L, 104L, 
105L, 106L, 107L, 108L, 109L, 110L, 111L, 112L, 113L, 114L, 115L, 
116L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, 124L, 125L, 126L, 
127L, 128L, 129L, 130L, 131L, 132L, 134L, 135L, 136L, 137L, 138L, 
139L, 140L, 142L, 143L)), .Names = c("ViolDesc", "RESULTDTTM", 
"count", "cumsum"), row.names = 15178:15227, class = "data.frame")
列类别:

> sapply(r, class)
$ViolDesc
[1] "character"

$RESULTDTTM
[1] "POSIXct" "POSIXt" 

$count
[1] "integer"

$cumsum

[1] "integer"
大约有15种不同的小提琴

如果我做了
ggplot(data=r,aes(x=RESULTDTTM,y=cumsum))+geom_线(aes(color=ViolDesc))%%>%print

我得到:

我只需要这个折线图就可以变成一个叠加面积图。但是,当我这样做时:
ggplot(data=r,aes(x=RESULTDTTM,y=cumsum,fill=ViolDesc))+geom_area()%%>%print
,我得到:


正如您所看到的,它变得非常尖锐,一点也不像
geom\u line()
。有人知道这是为什么吗?我觉得代码非常简单,一定是数据帧出了问题。

您的数据有x个值,但并不总是匹配。ggplot假设每个变量都有一个0,该变量在一个时间点缺少一个值,但另一个时间点有一个度量值

我们可以通过插值值来解决这个问题,使用每个时间点每个值的累积最大值

下面是如何使用
dplyr
tidyr
完成此操作

首先加载包:

library(tidyr)
library(dplyr)
library(ggplot2)
然后读取数据并确定日期格式:

z <- read.csv("sample.csv")
z$RESULTDTTM <- as.POSIXct(z$RESULTDTTM, format = "%m/%d/%Y")
这给了我这个图表:

您的数据有x个值,但并不总是匹配。ggplot假设每个变量都有一个0,该变量在一个时间点缺少一个值,但另一个时间点有一个度量值

我们可以通过插值值来解决这个问题,使用每个时间点每个值的累积最大值

下面是如何使用
dplyr
tidyr
完成此操作

首先加载包:

library(tidyr)
library(dplyr)
library(ggplot2)
然后读取数据并确定日期格式:

z <- read.csv("sample.csv")
z$RESULTDTTM <- as.POSIXct(z$RESULTDTTM, format = "%m/%d/%Y")
这给了我这个图表:

我对随机数据进行了一些实验,在我看来,geom_区域需要为数据集中存在的每个x的每个组提供一个y值,因为否则它不知道如何堆叠。你的数据就是这样吗?我猜你的x不匹配,在不同的因子之间,试着切换为nrow(r)你能详细说明一下在哪里使用
nrow(r)
?我想我现在看到了问题:一些因子与其他因子的日期(x轴)不同,所以它们不能全部绘制在同一个x轴上。我猜当一个因素看到它没有的日期时,它会以0/NA的形式填充它,使它下降并产生刺痛感。是的,没错。抱歉,我刚刚看到此消息,您需要ping用户才能通知他们(@)。我会将您的行子集为仅具有相同日期的行,并更改为aes(x=nrow(r),y=cumsum)或类似的行。我对随机数据进行了一些实验,在我看来,geom_区域需要为数据集中存在的每个x的每个组指定一个y值,因为否则它不知道如何堆叠。你的数据就是这样吗?我猜你的x不匹配,在不同的因子之间,试着切换为nrow(r)你能详细说明一下在哪里使用
nrow(r)
?我想我现在看到了问题:一些因子与其他因子的日期(x轴)不同,所以它们不能全部绘制在同一个x轴上。我猜当一个因素看到它没有的日期时,它会以0/NA的形式填充它,使它下降并产生刺痛感。是的,没错。抱歉,我刚刚看到此消息,您需要ping用户才能通知他们(@)。我会将您的行子集为仅具有相同日期的行,并更改为aes(x=nrow(r),y=cumsum)或沿着这些行的某个东西进行测试-我尝试了这个精确的代码(甚至在之前),它给出了上面的第二个图(即spiky)。。现在正在调查这件事。还有,你的ggplot版本是什么?我已经在这里上传了数据:。数据帧中没有空数据,所以我正在寻找其他方法来找出问题所在<代码>任何有效的(is.na(r))!你的回答让我不知所措(我从未使用过tidyr),但我能够复制你的照片。非常感谢,特别是您的及时反馈。没问题!它使每个变量在每个时间点都有一个值。如果您想继续,在每次
%%>%%
之前,您可以停止并查看值-即粘贴在
z%%>%spread(ViolDesc,cumsum)
z%%>%spread(ViolDesc,cumsum)%%>%groupby(resultdtm)
中,查看输出是什么,以及每个步骤是如何更改的-事实上我现在正在这样做-这看起来很有用。谢谢有趣-我尝试了这个精确的代码(甚至在之前),它给出了上面的第二个情节(即spiky)。。现在正在调查这件事。还有,你的ggplot版本是什么?我已经在这里上传了数据:。数据帧中没有空数据,所以我正在寻找其他方法来找出问题所在<代码>任何有效的(is.na(r))!你的回答让我不知所措(我从未使用过tidyr),但我能够复制你的照片。非常感谢,特别是您的及时反馈。没问题!它使每个变量在每个时间点都有一个值。如果您想继续,在每次
%%>%%
之前,您可以停止并查看值-即粘贴在
z%%>%spread(ViolDesc,cumsum)
z%%>%spread(ViolDesc,cumsum)%%>%groupby(resultdtm)
中,查看输出是什么,以及每个步骤是如何更改的-事实上我现在正在这样做-这看起来很有用。谢谢