我一直在尝试在我创建的数据框中的两列之间绘制图表。存储在第一列中的数据值是名为“时间”(格式-YYYY-MM-DD)的每日时间数据,第二列包含降水量,这是一个名为“data1”的数值。
此数据来自excel文件“St Lucia3”,该文件具有 11598 总数据点,并将1981年至2018年的每日降水数据存储在两列中:
1)YearMonthDay(格式 - “YYYYMMDD”,例如“19810501”)
2)降雨量(mm)
将数据导入R:
的代码StLucia <- read_excel("C:/Users/hp/Desktop/St Lucia3.xlsx")
时间数据代码“时间”:
Time <- as.Date(as.character(StLucia$YearMonthDay), format= "%Y%m%d")
降水数据“data1”的代码:
data1 <- na.ma(StLucia$`Rainfall (mm)`, k = 4, weighting = "exponential")
数据框“Pecip1”的代码:
Precip1 <- data.frame(Time, data1, check.rows=TRUE)
ggplot的代码是:
ggplot(data = Precip1, mapping= aes(x= Time, y= data1)) + geom_line()
使用ggplot绘制“时间”和“数据1”之间的图形结果为:
有人可以向我解释为什么在图表的右端存在类似行为的“异常扭结”,即使“data1”列中没有这样的值。
“data1”数据与其索引的关系如下所示:
该图的代码是:
plot(data1, type = "l")
任何帮助都将受到高度赞赏。谢谢!
答案 0 :(得分:2)
通过使用pad,我们可以弥补那些丢失的值,并指定NA值 避免在缺失数据的区域内绘图。
library(padr)
library(zoo)
YearMonthDay<-c(19810501,19810502,19810504,19810505)
Data<-c(1,2,3,4)
StLucia<-data.frame(YearMonthDay,Data)
StLucia$YearMonthDay <- as.Date(as.character(StLucia$YearMonthDay), format=
"%Y%m%d")
> StLucia
YearMonthDay Data
1 1981-05-01 1
2 1981-05-02 2
3 1981-05-04 3
4 1981-05-05 4
注意:你可以看到我们错过了一个日期,但是在第2和第3位之间仍然没有差距,因此绘图与索引你不会看到差距。
所以我们添加缺少的日期:
StLucia<-pad(StLucia,interval="day")
> StLucia
YearMonthDay Data
1 1981-05-01 1
2 1981-05-02 2
3 1981-05-03 NA
4 1981-05-04 3
5 1981-05-05 4
plot(StLucia, type = "l")
如果要填写这些NA值,请使用包(动物园)中的na.locf()
答案 1 :(得分:1)
这是一个可重现的示例 - 更改名称以匹配您的数据。
# create sample data
set.seed(47)
dd = data.frame(t = Sys.Date() + c(0:5, 30:32), y = runif(9))
# demonstrate problem
ggplot(dd, aes(t, y)) +
geom_point() +
geom_line()
董先生指出,最简单的解决方案是使用更合适的地理位置,例如geom_col
:
ggplot(dd, aes(t, y)) +
geom_col()
如果您真的想使用线路,则应使用NA
填写缺失日期以了解降雨量。 ħ
# calculate all days
all_days = data.frame(t = seq.Date(from = min(dd$t), to = max(dd$t), by = "day"))
# join to original data
library(dplyr)
dd_complete = left_join(all_days, dd, by = "t")
# ggplot won't connect lines across missing values
ggplot(dd_complete, aes(t, y)) +
geom_point() +
geom_line()
或者,您可以将缺失值替换为0以使该线沿着轴线移动,但我认为没有绘制线条更好,这意味着没有数据/缺失数据,而不是绘制0表示没有降雨量