plot() - ' b'图中的参数未显示连接点的线

时间:2017-05-05 16:02:38

标签: r plot shiny

我正在开发一款相当大的闪亮应用。我被要求从这个应用程序更改绘图的线型,这应该非常简单(只需更改type参数的值。即,我需要将type设置为l)。遗憾的是,使用ggplot不是一个选项,因为具有不同比例的另一个图将叠加到此图上。

然而,当我尝试时,它不起作用。尽管将type设置为b,但这些点不会被一条线连接(请参阅第二张图片)。当我尝试l时系列没有出现!

奇怪的是,如果我在一个小型ad-hoc应用程序中使用完全相同的代码(对于UI和服务器)和随机生成的数据(请参阅下面的代码段),它可以正常工作(见第一张图片)!!

我很想知道是什么导致了这种行为以及如何解决这个问题。

否则,或许您可以推荐一种获得相同结果的替代方法吗?

第一张图片(正如预期的那样): enter image description here 第二张图片: enter image description here 我的代码如下:

library(shiny)

# Define server logic required to draw a histogram
s <- shinyServer(function(input, output) {

  output$distPlot <- renderPlot({
    # some random data
    correlTs <- rnorm(200,50,2)
    dates <- seq(from=Sys.Date(),to=Sys.Date()+199, by=1)
    dateChar <- as.character(dates)
    rollingCorr <- data.frame(dateChar, correlTs)
    # same code as from larger app
    plot(
      as.Date(rollingCorr[, 1]),
      rollingCorr[, 2],
      type = "b",
      col = "dark blue",
      xlab = "Dates",
      ylab = "Correlation"
    )
  })
})

u <- shinyUI(
  navbarPage(
    "MR Tool",
    navbarMenu(
      "SAA",
      tabPanel("A plot",
        plotOutput("distPlot")))))

shinyApp(server = s, ui = u)

编辑:上面代码段中的UI代码似乎不必要地设计......它是从我在帖子开头提到的较大项目中粘贴的。对于那个更大的应用程序,tabPanel有意义。

1 个答案:

答案 0 :(得分:1)

通常我会发布一个修复程序,但是在这种情况下我们没有repro,我们有一个应该工作的重复,所以我不能确定我知道发生了什么。

我最好的猜测是数据中存在阻止线路连接的NA。如果您查看绘图文档,您将看到这是预期的行为。因此,查看?lines的输出,您可以找到以下摘录:

  

坐标可以包含NA值。如果一个点包含NA   无论是x还是y值,它都从图中省略,而行是   没有吸引或来自这些点。因此可以使用缺失值   在线上实现突破。

如果这确实是问题,那么您可以尝试通过添加以下行来修复它:

rollingCorr <- rollingCorr[complete.cases(rollingCorr),]

在绘制数据之前删除那些缺失的值。或者代替complete.cases,可能是一个不同的逻辑子句,仅针对图中使用的列。