Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用一个“点”来绘制线条图;“无年份”;日期轴_R_Ggplot2_Tidyverse_Tidyr - Fatal编程技术网

R 用一个“点”来绘制线条图;“无年份”;日期轴

R 用一个“点”来绘制线条图;“无年份”;日期轴,r,ggplot2,tidyverse,tidyr,R,Ggplot2,Tidyverse,Tidyr,我有2018-2020年的犯罪数据。每行代表一种罪行。在本例中,我们假设有两个变量crimetype(例如,盗窃、抢劫)和date(犯罪发生时) 一些样本数据: data <- data.frame(date= sample(seq(as.Date('2018/01/01'), as.Date('2020/12/31'), by="day"),10000, replace=T), crimetype = sample(c("A", "B", "C")

我有2018-2020年的犯罪数据。每行代表一种罪行。在本例中,我们假设有两个变量
crimetype
(例如,盗窃、抢劫)和
date
(犯罪发生时)

一些样本数据:


data <- data.frame(date= sample(seq(as.Date('2018/01/01'), as.Date('2020/12/31'), by="day"),10000, replace=T),
                   crimetype = sample(c("A", "B", "C"), 100000, replace=T))
我试图创建一个新的日期变量,其中所有日期都在同一年(这里是2020年)

data%变异(daymonth=substr(日期,5,长度(日期)),
日期=截止日期(粘贴(“2020”,daymonth,sep=”“),
daymonth=NULL)
有没有更好的方法来实现这一点?我如何绘制图表

data_plot <- data %>% filter(crimetype == 'A')
ggplot(data = data_plot, aes(x = date_new, y = ?, color=format(date, "%Y")) + geom_line()
data\u plot%过滤器(crimetype=='A')
ggplot(数据=数据+绘图,aes(x=新日期,y=?,颜色=格式(日期,“%y”))+geom线()

有关日期的使用,请查看我在此处用于提取年份的
lubridate
包。此外,您还可以使用
格式(日期,“%d-%m”)删除年份
。以下方法有点老套。若要使用日期轴但仍要删除年份,我将所有日期的年份设置为2018年。要绘制哪个变量的问题…只需计算obs,即可按日期获得犯罪数量。最后,我将日期轴的间隔设置为1个月。根据您的喜好进行调整。尝试以下方法:

库(ggplot2)
图书馆(dplyr)
图书馆(lubridate)
数据%
过滤器(crimetype=='A')%>%
计数(日期、日期、年份、犯罪类型)
ggplot(数据=数据图,aes(x=日期,y=n,颜色=年份,组=年份))+
geom_线()+
缩放日期(日期间隔=“1个月”,日期标签=“%d-%m”)
#>警告:已删除包含缺失值的1行(几何路径)。

由(v0.3.0)于2020年3月28日创建

data <- data %>% mutate(daymonth = substr(date, 5, length(date)),
                        date_new = as.Date(paste("2020", daymonth, sep="")),
                        daymonth = NULL)
data_plot <- data %>% filter(crimetype == 'A')
ggplot(data = data_plot, aes(x = date_new, y = ?, color=format(date, "%Y")) + geom_line()