【问题标题】:Shiny plot not showing full output闪亮的情节没有显示完整的输出
【发布时间】:2015-09-11 03:37:28
【问题描述】:

我制作了一个非常基本的闪亮应用程序,可以在这里找到:https://tejaykodali.shinyapps.io/taxiTrips

由于某种原因,即使我将结束时间设置为 23,它也不会显示超过 20 小时的输出。

这是生成绘图的函数:

tripsPlot <- function(day, startHour, endHour) {
  tripsData <- subset(taxiData, Day == day)
  tripsTable <- table(hour(tripsData$tpep_pickup_datetime))
  tripsTable <- tripsTable[startHour + 1:endHour + 1]
  taxiPlot <- plot(tripsTable, type = 'o', xlab = 'Hour', xlim = c(startHour, endHour))
  return(taxiPlot)
}

完整代码在这里:https://github.com/ginobili0/taxiTrips

我做错了什么?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    首先,你应该换行

    tripsTable &lt;- tripsTable[startHour + 1:endHour + 1]

    tripsTable &lt;- tripsTable[(startHour + 1):(endHour + 1)].

    冒号运算符的优先级高于加号运算符(在 R 中,请参阅 ?Syntax 以供参考)。

    编辑:

    另一个问题是tripsTable是一个table(起初),其中a是一维向量并且由属性dimnames枚举(见attributes(tripsTable)),但是当你将它子集在您上面的行将返回一个 array 对象。因此,plot 不会选择 table 方法 (plot.table)。最终,plot 采用一维向量并将它们沿 1 到 x 绘制(因为它不尊重 dimnames 属性)。有两种解决方案,较短的一种正在修改

    tripsTable &lt;- tripsTable[(startHour + 1):(endHour + 1)]

    tripsTable &lt;- as.table(tripsTable[(startHour + 1):(endHour + 1)]).

    由此我们确保tripsTable 再次是table 类的对象,以便plot 采用相应的方法。

    您还可以使用正确的 xy 值(x 是小时)创建一个新数据框,就像这样...

    tripsTable &lt;- data.frame(seq(startHour, endHour, 1), tripsTable)

    【讨论】:

    • 当我这样做时,最后两点在图中被截断。例如:如果我选择 3 到 14,它只显示 3 到 12。
    • 奇怪,因为当我从您的存储库复制代码并应用我建议的更改时,它工作得很好。当我选择 3 作为开始时间并选择 14 作为结束时间时,图中的 x 限制就是:3 到 14。
    • 我将它转换为表格后它工作了!谢谢!
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 2017-11-07
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多