R-具有特定变量的绘图图

时间:2015-04-08 09:16:45

标签: r graph

这就是我的数据框架:

    Persnr    Date    AmountHolidays
1   55312     X201101 2
2   55312     X201102 4.5
3   55312     X201103 5
etc.

我想要的是一个图表,显示特定人(persnr)的每个句点(x轴上的日期)的假日数量(在y轴上)。基本上,它是R中的枢轴图。到目前为止,我知道,不可能创建这样的图形。 这样的事情是我想要的结果:

http://imgur.com/62VsYdJ

首先可以在R中创建这样的模型吗?如果没有,我在R中可视化这样的图形的最佳方法是什么? 提前谢谢。

2 个答案:

答案 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)

enter image description here

答案 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的名称或编号。

示例:

第一个选项 enter image description here 第二个选项 enter image description here

<强> 数据:

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")