2017-09-05 73 views
0

我对R来说比较新。我正在制作一个R Shiny应用程序,并基于用户的输入,我想分析数据并输出一个显示Jaccard索引的栏。这就是我想要的样子,虽然很明显平滑渐变:创建一个反应矩形图

enter image description here

请注意,杰卡德指数(在这种情况下,0.35)将每个输入后更改,所以我喜欢的东西反应。我只是不知道从哪里开始,或者如果在这种情况下制作这样的情节,甚至可以在R.

谢谢。

编辑:我用一个在线渐变发生器来想出这个情节:我怎么能在这个特定的图像上叠加一条垂直线与相应的Jaccard索引和条上的相应位置?

enter image description here

编辑:我想实际的前后情节我的文字后删除空格。有任何想法吗? enter image description here

回答

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) 

enter image description here

+0

我怎么R中闪亮使用此用箭头合适的位置?我怎么能简单地''返回'一个对象,即这个阴谋,在一个'反应性'函数?在你的代码中,每一行都建立在彼此之上,所以我不知道该怎么做...... – sweetmusicality

+1

@ renderPlot中的@musmusicality,你不必返回“一个对象” –

+0

你不必只有返回一个对象? – sweetmusicality

1

对于基础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) 

enter image description here

+0

我在哪里指定它是“0.35”的方式?bc现在你的“0.35”几乎是“0.66”,我试着在你的代码中的其他值在你的箭头功能,并不知道在哪里改变它 – sweetmusicality

+1

这应该更好 – Ameya

+0

谢谢:)最后一个问题 - 我如何添加下面的值,或至少附近的箭头? – sweetmusicality