【问题标题】:Creating a reactive rectangular plot创建反应矩形图
【发布时间】:2018-02-14 07:39:50
【问题描述】:

我对 R 比较陌生。我正在制作一个 R Shiny 应用程序,我想根据用户的输入分析数据并输出一个显示 Jaccard 索引的条形图。这就是我想要的样子,虽然很明显是一个平滑的渐变:

请注意,Jaccard 指数(在本例中为 0.35)会在每次输入后发生变化,所以我想要一些反应性的东西。我只是不知道从哪里开始,或者在 R 中是否可以制作这样的情节。

谢谢。

编辑:我使用在线渐变生成器来绘制此图:如何在此特定图像的条形图上覆盖一条垂直线及其对应的 Jaccard 索引和相应的位置?

编辑:我想在实际情节之前和我的文本之后删除空白。有任何想法吗?

【问题讨论】:

    标签: r plot shiny


    【解决方案1】:

    使用plotrix 包:

    library(plotrix)
    # get an empty box
    plot(0:10, type="n", axes=FALSE, xlab=NA, ylab=NA)
    # rectangle filled with a gradient
    gradient.rect(0, 0, 10, 5, col=smoothColors("red",38,"blue"), border=NA)
    # vertical bar 
    segments(3.5, 0, 3.5, 5, lwd=2)
    text(3.5, 0, "0.35", pos=1, xpd=TRUE)
    

    【讨论】:

    • 如何在 R Shiny 中使用它?我怎样才能在reactive 函数中简单地return 一个对象,也就是这个情节?在你的代码中,每一行都建立在彼此的基础上,所以我不知道该怎么做......
    • @sweetmusicality in renderPlot,您不必返回“一个对象”
    • 你不必只返回一个对象吗?
    • nvm,它可以工作 - 非常感谢!快速提问 - 如何删除情节周围所有多余的空白区域?我已经更新了我的问题,向您展示我的意思
    • @sweetmusicality 从plot(0, 0, xlim=c(0,10), ylim=c(0,5)) 开始,如果需要,调整xlimylim
    【解决方案2】:

    对于基础 R 中的某些内容,this solution 的不完美修改版本可能会起作用。

    color.bar <- function(lut, min, max=-min, nticks=11, ticks=seq(min, max, len=nticks), title='') {
      scale = (length(lut)-1)/(max-min)
      dev.new(width=1.75, height=5)
      plot(c(min,max), c(0,10), type='n', bty='n', xaxt='n', xlab='', yaxt='n', ylab='', main=title)
      for (i in 1:(length(lut)-3)) {
        x = (i-1)/scale + min
        rect(x, 0 ,1, 30/scale, col=lut[i], border=NA)
      }
    }
    

    然后制作如下图 -

    color.bar(colorRampPalette(c("light green", "yellow", "orange", "red"))(100), 0, 1)
    

    此时也许您可以添加abline(v = 0.35) 来获得您想要的东西? 您甚至可以尝试使用箭头指向适当的位置

    arrows(0.35, -1, 0.35, 0, length = 0.07, angle = 25)
    

    【讨论】:

    • 我在哪里指定它是“0.35”的方式? bc 现在你的“0.35”几乎是“0.66”,我在你的箭头函数的代码中尝试了其他值,但无法弄清楚在哪里改变它
    • 谢谢 :) 最后一个问题 - 如何在箭头下方或至少在箭头附近添加值?
    • 试试text(0.35, 0.1, labels = '0.35', cex = 0.8)
    • 谢谢!如何从图像中删除空白(请参阅已编辑的问题:您的情节也会导致相同的问题)
    猜你喜欢
    • 2014-05-13
    • 2020-01-09
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多