2017-09-05 75 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