【问题标题】:R- Plot graph with certain variableR- 具有特定变量的绘图图
【发布时间】:2015-04-08 09:16:45
【问题描述】:

这是我的数据框的样子:

    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 中可视化此类图表的最佳方式是什么? 提前致谢。

【问题讨论】:

  • 你试过plot(df$Persnr, df$AmountHolidays)吗?
  • 你需要先清理一下你的 Date 变量,但当然,这是可行的!
  • @TimBiegeleisen,如果你那样做,它不会考虑日期..

标签: r graph


【解决方案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 坐标,您可以使用 as.POSIXct(YYYY-MM-DD)as.numeric(as.POSIXct(YYYY-MM-DD),就像我为 xlim 所做的那样。

【讨论】:

  • 感谢您的意见。但是我仍然缺少图中的 Persnr。例子;我想查看 persnr 55312 的人每个日期的假期数量。您的图表没有考虑 Persnr。
  • 在自定义图表方面,您可以做的还有很多!
  • 非常感谢!这与我正在寻找的东西非常接近。
  • 不错的解决方案,但如果有例如 50 种不同的 Persnr...
  • 我同意 ggplot2 在这方面提供了更大的灵活性。或者,也许仅仅使用基本图形,我们可以更容易地扩展它。这很快就完成了。
【解决方案2】:

你可以试试包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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2018-05-07
    相关资源
    最近更新 更多