2016-10-12 170 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