这就是我的数据框架:
Persnr Date AmountHolidays
1 55312 X201101 2
2 55312 X201102 4.5
3 55312 X201103 5
etc.
我想要的是一个图表,显示特定人(persnr)的每个句点(x轴上的日期)的假日数量(在y轴上)。基本上,它是R中的枢轴图。到目前为止,我知道,不可能创建这样的图形。 这样的事情是我想要的结果:
首先可以在R中创建这样的模型吗?如果没有,我在R中可视化这样的图形的最佳方法是什么? 提前谢谢。
答案 0 :(得分:1)
这样的事情可以解决这个问题吗?
dat <- read.table(text="Persnr Date AmountHolidays
55312 2011-01-01 2
55312 2011-02-01 4.5
55312 2011-03-01 5
55313 2011-01-01 4
55313 2011-02-01 2.5
55313 2011-03-01 6", header=TRUE)
dat$Date <- as.POSIXct(dat$Date)
dat$Persnr <- as.factor(dat$Persnr)
# Build a primary graph
plot(AmountHolidays ~ Date, data = dat[dat$Persnr==55312,], type="l", col="red",
xlim = c(1293858000, 1299301200), ylim=c(0,8))
# Add additional lines to it
lines(AmountHolidays ~ Date, data = dat[dat$Persnr==55313,], type="l", col="blue")
# Build and place a legend
legend(x=as.POSIXct("2011-02-19"), y=2.2, legend = levels(dat$Persnr),fill = c("red", "blue"))
要设置X坐标,您可以像我对xlim那样使用as.POSIXct(YYYY-MM-DD)
或as.numeric(as.POSIXct(YYYY-MM-DD)
。
答案 1 :(得分:0)
您可以尝试使用包ggplot2
:
第一个选项
ggplot(dat, aes(x=Date, y=AmountHolidays, group=Persnr)) +
geom_line(aes(colour=Persnr)) + scale_colour_discrete()
或
第二个选项
ggplot(dat, aes(x=Date, y=AmountHolidays, group=Persnr)) +
geom_line() + facet_grid(~Persnr)
其中一个优点是您不需要为每个Persnr设置一行,甚至不需要指定(知道)Persnr的名称或编号。
示例:强>
第一个选项 第二个选项
<强> 数据:的强>
dat <- structure(list(Persnr = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("54000",
"55312"), class = "factor"), Date = structure(c(1L, 2L, 3L, 1L,
2L, 3L), .Label = c("2011-01-01", "2011-02-01", "2011-03-01"), class = "factor"),
AmountHolidays = c(5, 4.5, 2, 3, 6, 7)), .Names = c("Persnr",
"Date", "AmountHolidays"), row.names = c(3L, 5L, 6L, 1L, 2L,
4L), class = "data.frame")