2016-10-12 207 views
0

我一直在努力解決這個問題幾天,如果有人可以幫助我。我有一個表格數據,其中有一個「結果」列,其值爲「高」,「中」或「低」。我試圖通過計算數據集中高,中和低的數量並嘗試爲每個類別分配顏色來創建餅圖。以下是我的代碼。我已經嘗試cols1和cols2作爲我的標記和其他幾種方法,但似乎沒有任何工作。請記住,這是一個動態表,因此可能會出現沒有High或沒有Medium等情況,所以我不能使用list(c(「番茄」,「ornage」,「olivedrab」)作爲標記。顏色有被束縛的結果類別。R Plotly餅圖自定義顏色

tab <- count(data, results) 

    tab <- transform(tab, 
        results_ord = factor(
        results , 
        levels = c('High', 'Medium', 'Low'), 
        ordered = TRUE 
        )) 
    cols1 <- 
    c(
     High = "olivedrab", 
     Medium = "orange", 
     Low = "tomato" 
    ) 
    cols2 <- 
    c(ifelse(
     tab$results_ord == "High", 
     "olivedrab", 
     ifelse(
     tab$results_ord == "Medium", 
     "orange", 
     "tomato" 
    ) 
    )) 


    plot_ly(
    tab, 
    labels = results_ord, 
    values = n, 
    marker = list(cols2), 
    type = "pie" 
) %>% 
    layout(title = "Results") 

    thanks, 

馬諾阿格拉瓦爾

+0

我試過,但沒有得到一個圖表背面 cols1 < - C( 「淡綠褐」, 「橙色」, 「番茄」 ) plot_ly( 標籤, 標籤= results_ord, 值= N, 標記=標記(顏色= results_ord,顏色=名單(cols1)), TYPE = 「餡餅」 )%>% 佈局(標題= 「結果」) 可以請你告訴我正確的語法? –

回答

0

這句法是爲了plotly 4.x的版本,但您可以相應地調整爲更老的版本,這裏是你如何能得到人工顏色顯示:

df <- count(mtcars, am) 
plot_ly(df, values = ~n, labels = ~factor(am), colors = c('#FF7F0E', '#1F77B4'), type = 'pie') 

您可以調整因子訂單,以獲得所需的顏色fo r所需的價值。

+0

Gopala,一旦刪除了一個或多個類別,配色方案就會失控,因爲顏色不與該類別綁定。在ggplot中,您可以做類似這樣的操作 cols < - c( 'High Performers'=「olivedrab 「, Underperformers =」orange「, 'No Sales'=」steelblue「 ) 有沒有類似的東西,我們可以做的情節? –

+0

不是我所知道的。但是,您可以提前有條件地生成「顏色」矢量,並將其保存到變量中,然後饋送它。 – Gopala