我正在开发一款相当大的闪亮应用。我被要求从这个应用程序更改绘图的线型,这应该非常简单(只需更改type
参数的值。即,我需要将type
设置为l
)。遗憾的是,使用ggplot
不是一个选项,因为具有不同比例的另一个图将叠加到此图上。
然而,当我尝试时,它不起作用。尽管将type
设置为b
,但这些点不会被一条线连接(请参阅第二张图片)。当我尝试l
时系列没有出现!
奇怪的是,如果我在一个小型ad-hoc应用程序中使用完全相同的代码(对于UI和服务器)和随机生成的数据(请参阅下面的代码段),它可以正常工作(见第一张图片)!!
我很想知道是什么导致了这种行为以及如何解决这个问题。
否则,或许您可以推荐一种获得相同结果的替代方法吗?
第一张图片(正如预期的那样): 第二张图片: 我的代码如下:
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
有意义。
答案 0 :(得分:1)
通常我会发布一个修复程序,但是在这种情况下我们没有repro,我们有一个应该工作的重复,所以我不能确定我知道发生了什么。
我最好的猜测是数据中存在阻止线路连接的NA。如果您查看绘图文档,您将看到这是预期的行为。因此,查看?lines
的输出,您可以找到以下摘录:
坐标可以包含NA值。如果一个点包含NA 无论是x还是y值,它都从图中省略,而行是 没有吸引或来自这些点。因此可以使用缺失值 在线上实现突破。
如果这确实是问题,那么您可以尝试通过添加以下行来修复它:
rollingCorr <- rollingCorr[complete.cases(rollingCorr),]
在绘制数据之前删除那些缺失的值。或者代替complete.cases
,可能是一个不同的逻辑子句,仅针对图中使用的列。