【问题标题】:How to manage x axis ticks when handling dynamic x asix through shiny (inside ggplot)通过闪亮处理动态x轴时如何管理x轴刻度(在ggplot内)
【发布时间】:2020-03-21 05:59:33
【问题描述】:

以下是我的绘图功能,

我在这里使用了实现的代码而不是可重现的代码,因为我只是想知道这里处理事物的概念。

print(ggplot(subset(gg1,!is.na(var)), aes_string(x = "Day", y = var, group = "Mi")) +
                geom_point(aes(color = factor(Mi)), size = 5, alpha = 0.7) + 
                #scale_x_continuous(breaks=pretty_breaks(n=10)) + #geom_smooth(stat= "smooth" , alpha = I(0.4), method="loess",color="grey", formula = y ~ x)  
                scale_color_manual("Mesocosm", values = c('#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#808080', '#800000' , '#008000', '#008080')) +
                scale_y_continuous(breaks=pretty_breaks(n=10)) +
                theme_bw() +
                geom_line(data = (ggl), size = 0.5) +
                theme (legend.position = "right", legend.title=element_text(size=14),
                       panel.border = element_rect(colour = "black"),strip.background = element_rect(fill="#CCCCFF"), 
                       strip.text.x = element_text(size=14, face="bold"),axis.text.y = element_text(colour="grey20",size=13,face="bold"),
                       axis.text.x = element_text(colour="grey20",size=13,face="bold"),
                       axis.title.x = element_text(colour="grey20",size=20,face="bold"),
                       axis.title.y = element_text(colour="grey20",size=20,face="bold")) +
                xlim(input$slider[1],input$slider[2]) +
                scale_x_continuous(breaks=pretty_breaks(n=10)) )

我想拆分 x asix 刻度以适应 x 轴上的更多刻度。如上例所示,我可以使用 scale_x_continuous 来做到这一点。结果很好,我得到了我想要的滴答声。

什么是滴答声?可以在这里找到类似的问题:[Pretty Breaks][1]

但在上述实现中,动态 x 轴无法进行操作,

动态x轴:改变滑动条点使x轴自动调整。

下一步: 如果我颠倒最后两行的顺序,例如

scale_x_continuous(breaks=pretty_breaks(n=10)) + xlim(input$slider[1],input$slider[2]) )

然后 scale_x _continuous 不起作用,说“'x' 的比例已经存在。为 'x' 添加另一个比例,它将替换现有的比例。” (这消除了我打算拥有的许多滴答声)。

在这种情况下,我该如何实现这两者。 [想要动态 x 轴,还想要覆盖预定义的刻度并拥有更多的刻度。]

可以在这张图片中看到概述。 ![在此处输入图片描述][2]

即使滑块值发生更改,图片仍显示,x 轴没有调整,因为正如我所说的 scale_x_continuous 和 xlim 的顺序。

我怎样才能使两者都工作?

【问题讨论】:

  • 您是否尝试过在scale_x_continuous 中使用limits 参数而不是使用简写函数xlim

标签: r shiny shiny-server


【解决方案1】:

我认为 scale_x_continous() 函数中的限制是您想要的。

替换:

xlim(input$slider[1],input$slider[2]) +
                scale_x_continuous(breaks=pretty_breaks(n=10)) )

与:

scale_x_continuous(breaks=pretty_breaks(n=10), limits=c(input$slider[1],input$slider[2])) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多