Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 连续缩放,不需要离散值_R_Ggplot2_Shiny - Fatal编程技术网

R 连续缩放,不需要离散值

R 连续缩放,不需要离散值,r,ggplot2,shiny,R,Ggplot2,Shiny,我想根据热图中的用户点击输入绘制一个折线图。我可以做到这一点,但y轴排列不正确,太拥挤了。按下“绘图”按钮后,将显示热图,当按下热图上的某个点时,对应于热图中特定列的数据将以线图的形式绘制在其下方。线条图看起来像 但是正如你所看到的,y轴是杂乱无章的,而且太拥挤了。所以我想打破它,施加一些限制 我的代码是 Comp_name <- c("Dum1") Inc <- c(175.26,175.365,175.65,176.65,176.165,176.1685,175.56)

我想根据热图中的用户点击输入绘制一个折线图。我可以做到这一点,但y轴排列不正确,太拥挤了。按下“绘图”按钮后,将显示热图,当按下热图上的某个点时,对应于热图中特定列的数据将以线图的形式绘制在其下方。线条图看起来像

但是正如你所看到的,y轴是杂乱无章的,而且太拥挤了。所以我想打破它,施加一些限制

我的代码是

    Comp_name <- c("Dum1")
Inc <- c(175.26,175.365,175.65,176.65,176.165,176.1685,175.56)
Exp <- c(175.48,174.53,174.165,173.1651,175.651,174.16541,176.65)
Date <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dates <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dummy1 <- as.data.frame(cbind(Comp_name,Inc,Exp,Date,Dates))
Comp_name1 <- c("Dum2")
Inc1 <- c(151.26,151.59,151.23,152.46,152.49,151.29,150.81)
Exp1 <- c(152.64,152.84,152.64,152.48,152.35,154.26,153.14)
Date1 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dates1 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dummy2 <- as.data.frame(cbind(Comp_name1,Inc1,Exp1,Date1,Dates1))
Comp_name2 <- c("Dum3")
Inc2 <- c(160.45,161.25,163.56,165.25,163.59,160.89,161.26)
Exp2 <- c(160.19,160.78,162.15,164.89,165.24,163.25,162.48)
Date2 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dates2 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dummy3 <- as.data.frame(cbind(Comp_name2,Inc2,Exp2,Date2,Dates2))
Comp_name3 <- c("Dum4")
Inc3 <- c(156.26,155.12,157.12,158.78,154.26,160.12,161.26)
Exp3 <- c(160.19,160.19,155.19,154.26,150.12,157.26,159.12)
Date3 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dates3 <- c(2018-06-01,2018-06-02,2018-06-03,2018-06-04,2018-06-05,2018-06-06,2018-06-07)
Dummy4 <- as.data.frame(cbind(Comp_name3,Inc3,Exp3,Date3,Dates3))
Data <- cbind(Dummy1,Dummy2,Dummy3,Dummy4)
Data <- as.data.frame(Data)



library(shiny)

ui <- fluidPage(
sidebarLayout(
sidebarPanel(),
mainPanel(selectInput("ploth","Heatmap", "Plot Heatmap Of", choices =c("Income" = "inc2",
                                                                   "Expenditure" = "exp2",
                                                                   "Gross Profit" = "gprofit2",
                                                                   "Net Profit" = "nprofit2")),
                       actionButton("hplotit","Plot Heatmap"),
                       plotlyOutput("HeatPlot"),
                       plotlyOutput("Next")
)    ))

server <- function(input,output,session) {
        observeEvent(input$hplotit, {
             inc1 <- as.data.frame(cbind(Dummy1 = Data[,2],Dummy2 = Data[,7],
                                         Dummy3 = Data[,12], Dummy4 = Data[,17]))
             inc2 <- as.matrix(inc1)
             exp1 <- as.data.frame(cbind(Dummy1 = Data[,3],Dummy2 = Data[,8],
                                         Dummy3 = Data[,13], Dummy4 = Data[,18]))
             exp2 <- as.matrix(exp1)
             gprofit1 <- as.data.frame(cbind(Dummy1 = Data[,3] - Data[,2],
                                            Dummy2 = Data[,8] - Data[,7],
                                            Dummy3 = Data[,13] - Data[,12],
                                            Dummy4 = Data[,18] - Data[,17]))
             gprofit2 <- as.matrix(gprofit1)
             nprofit1 <- as.data.frame(cbind(Dummy1 = (Data[,3] - Data[,2]) - ((Data[,3] - Data[,2]) * 0.06),
                                             Dummy2 = (Data[,8] - Data[,7]) - ((Data[,8] - Data[,7]) * 0.10),
                                             Dummy3 = (Data[,13] - Data[,12]) - ((Data[,13] - Data[,12]) * 0.18),
                                             Dummy4 = (Data[,18] - Data[,17]) - ((Data[,18] - Data[,17]) * 0.22)))
             nprofit2 <- as.matrix(nprofit1)
             date <- as.character(Data[,4])
             h <- input$ploth
             switch(EXPR = h ,
                    inc2 = output$HeatPlot <- renderPlotly( plot_ly(x = colnames(inc2), y = date,
                                                                    z = inc2, type = "heatmap",
                                                                    colorscale = "Earth")),

                    exp2 = output$HeatPlot <- renderPlotly( plot_ly(x = colnames(exp2), y = date,
                                                                    z = exp2, type = "heatmap", 
                                                                    colors = colorRamp(c("red",
                                                                                         "yellow")))),

                    gprofit2 = output$HeatPlot <- renderPlotly( plot_ly(x = colnames(gprofit2),
                                                                        y = date, z = gprofit2,
                                                                        type = "heatmap",
                                                                        colorscale="Greys")),

                    nprofit2 = output$HeatPlot <- renderPlotly( plot_ly(x = colnames(nprofit2),
                                                                        y = date, z = nprofit2,
                                                                        type = "heatmap")) 
             )       
    })

      output$Next <- renderPlotly({
        event.data <- event_data(event = "plotly_click")[["x"]]
        vars <- as.character(event.data)
        dateof <- event_data(event = "plotly_click")[["y"]]
        dates <- as.character(dateof)
        value <- event_data(event = "plotly_click")[["z"]]
        values <- as.character(value)
        inc1 <- as.data.frame(cbind(Dummy1 = Data[,2],Dummy2 = Data[,7],
                                    Dummy3 = Data[,12], Dummy4 = Data[,17]))
        inc2 <- as.matrix(inc1)
        exp1 <- as.data.frame(cbind(Dummy1 = Data[,3],Dummy2 = Data[,8],
                                    Dummy3 = Data[,13], Dummy4 = Data[,18]))
        exp2 <- as.matrix(exp1)
        gprofit1 <- as.data.frame(cbind(Dummy1 = round(Data[,3] - Data[,2],2),
                                        Dummy2 = round(Data[,8] - Data[,7],2),
                                        Dummy3 = round(Data[,13] - Data[,12],2),
                                        Dummy4 = round(Data[,18] - Data[,17],2)))
        gprofit2 <- as.matrix(gprofit1)
        nprofit1 <- as.data.frame(cbind(Dummy1 = round((Data[,3] - Data[,2]) - ((Data[,3] - Data[,2]) * 0.06),2),
                                        Dummy2 = round((Data[,8] - Data[,7]) - ((Data[,8] - Data[,7]) * 0.10),2),
                                        Dummy3 = round((Data[,13] - Data[,12]) - ((Data[,13] - Data[,12]) * 0.18),2),
                                        Dummy4 = round((Data[,18] - Data[,17]) - ((Data[,18] - Data[,17]) * 0.22),2)))
        nprofit2 <- as.matrix(nprofit1)
        h <- input$ploth
        did <- cbind(Date = (as.character(Data[,4])),get(h))
        mini <- as.numeric(min(levels(Data[,vars]))) - 1
        maxi <- as.numeric(max(levels(Data[,vars]))) + 1
        if(is.null(event.data)) NULL else ggplotly(ggplot(as.data.frame(did[,vars])) + 
                                                     geom_line(aes(x = Data[,4], y = did[,vars], group = 1 ), stat = "identity", col = "blue")+
                                                     geom_point(aes(x = Data[,4], y = did[,vars]), stat = "identity", col = ifelse(Data[,4] == dates, "green", "darkmagenta"))+
                                                     theme(axis.text.x = element_text(angle = 90))+ xlab("Dates")+ylab("(in lakhs)")+
                                                     scale_y_continuous(limits = c(mini,maxi), breaks = seq(mini,maxi,1)))
          })

      }

}                       


# Run the application 
shinyApp(ui = ui, server = server)

请帮忙。多谢各位


这不是前面问题的重复,因为实际代码已被稍微修改,以产生最小的可复制代码。实际的代码有file.choose()函数,然后完成了cbind,将其全部放入一个更大的数据帧中。那么,有没有一种方法可以在不删除cbind函数的情况下解决这个问题呢?

这里的问题是使用
cbind
。由于“日期”列具有非数字字符(虚线),
cbind
会将每一列转换为字符数据类型,从而导致出现打印问题
cbind
希望每个列具有相同的类型,而
data.frame
支持异构类型的列

因此,例如,创建
Dummy1
的行应该是:

Dummy1 <- as.data.frame(Comp_name,Inc,Exp,Date,Dates)

Dummy1我看到了这个问题,但似乎没有什么帮助。我想重新组织并缩短我的y轴范围@Pogibasy您必须先将其转换为数字,然后才能指定范围,但这仍然没有帮助
Error in [.data.frame: undefined columns selected
Error in : Discrete value supplied to continuous scale
Dummy1 <- as.data.frame(Comp_name,Inc,Exp,Date,Dates)