首页 > 解决方案 > 抑制 ggplot2 图中的非整数轴中断(在 Shiny 应用程序中)

问题描述

我已经尝试了如何使用 ggplot2 在轴上仅显示整数值中推荐的所有解决方案。不幸的是,我无法解决其中任何一个问题。

我创建了一个闪亮的应用程序,它可以生成关于各种变量的年度数据的折线图。这适用于大多数参数化:

在此处输入图像描述

没有非整数中断

但是,如果我在滑块上选择某些时间跨度,它会生成在 x 轴上具有非整数中断的图形,这对于年度数据没有意义。

在此处输入图像描述

有非整数中断

编辑:这里是应用程序的最小可复制版本

library(tidyverse)
library(shiny)

options(scipen = 999)

# Data
data1<-data.frame(values = c(15500, 16300, 18200, 28300, 23500, 23700,
                             31500, 35800, 34700, 36900, 40000, 44700,
                             53300, 55800, 69800, 89500, 1.13E+5,
                             1.53E+5, 1.77E+5, 1.83E+5, 1.99E+5), 
                  year = seq(1990, 2010, 1))

#Shiny app

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
    sliderInput("period", "Year:", min = 1990, max = 2010, value = c(1990, 2010), sep = "")),
mainPanel(plotOutput("ggplot2"))))

server <- function(input, output) {

  data1_subset <- reactive({
      filter(data1, year >= input$period[1] & year <= input$period[2])
  })


  output$ggplot2 <- renderPlot({
        ggplot(data = data1_subset(), aes(x = year, y = values)) +
          geom_line(aes(color = "red")) +
          scale_x_continuous(name = "Year") +
          scale_color_discrete(guide=FALSE)+
          theme_minimal()

  })
}

shinyApp(ui = ui, server = server)

要查看问题,请选择例如时间跨度 2000-2010

有什么方法可以抑制非整数中断,因为年度数据显然是无意义的?

非常感谢您的帮助!

标签: rggplot2shiny

解决方案


谢谢你的帮助!似乎答案比我想象的要简单得多。放入breaks = function(x) unique(floor(pretty(x)))我的scale_x_continuous()函数会产生仅整数的中断,即使没有将数据转换为Date格式。在我的情况下,删除unique()不会改变行为,但在其他情况下可能会这样做。


推荐阅读