2015-08-14 134 views
0

在我的應用程序中,我希望用戶能夠生成條形圖,只選擇他們想要使用的行。我已經使用矩陣完成了這一操作,但是當我嘗試着色圖表時,它不起作用。R barplot color not working with matrix

這裏是一個可以上傳一個示例文件:

Name Score 
Bob  4 
Fred 1 
Gary 2 
Mary 5 
Pete 7 

在我簡單的例子下面我繪製的所有行以「分數」的高度,用inFile()[["Score"]]完成時我能色彩酒吧罰款。但是當使用as.matrix(t(inFile()[c(1:5), "Score"]))時,所有條形圖都是相同的顏色。

有沒有一種方法,當用戶指定基礎R行和列我可以畫出不同顏色的酒吧(項目顯示了從不同的包不同的地塊,該地塊我想只顯示基礎R)

全例如:

server.r

library(shiny) 

shinyServer(function(input, output) { 
    inFile = reactive({ return (read.csv(file.choose(), header = TRUE))}) 

    output$plot = renderPlot({ 
    barplot(
     #inFile()[["Score"]], #Colours correctly 
     as.matrix(t(inFile()[c(1:5), "Score"])), #Only 1 colour 

     col = as.matrix(rainbow(5))) 
    }) 
}) 

ui.R

shinyUI(pageWithSidebar(
    headerPanel("Bar Plots"), 
    sidebarPanel(
), 
    mainPanel(
    plotOutput("plot") 
) 
)) 

對不起,如果這已被回答之前,搜索時,我只能找到人推薦使用ggplot,但不適合這個項目。提前致謝。

回答

0

至於繪圖,這應該工作:

barplot(
inFile()$Score[1:5], 
col = rainbow(5)) 

我不知道爲什麼你要使用的數據爲基體,但同時去除as.matrix時(INFILE())和as.matrix (彩虹(5))。 col參數至少要求是一個vector。此外,使用美元符號來提取'Score'列在我看來有點乾淨。

對於來自用戶的部分輸入,也許你renderPlot內:

file=inFile()[,input$nameofcolumn] 
min=as.numeric(input$minrowvalue) 
max=as.numeric(input$maxrowvalue) 
barplot(
file[min:max], 
col = rainbow(5)) 

希望這有助於!

相關問題