R-Stock数据中的Formattable数据表着色

R-Stock数据中的Formattable数据表着色,r,datatable,formattable,R,Datatable,Formattable,我有一个数据表,用于存储我正试图用R的formattable包着色的几只股票的每日/每周/每月回报。我希望负回报是红色,正回报是绿色。或者想象一下,为正值和负值设置一个单独的梯度-因此,如果苹果一天下跌10%,它将是暗红色,如果亚马逊下跌2%,该单元格将是浅红色-反之亦然,正回报为浅绿色和深绿色 我的问题是当我使用红色绿色渐变时,中间的颜色看起来是棕色的。下面的代码以透明/白色作为渐变的低端,绿色作为高端,但很难区分 我的datatable看起来像: Stock day week mont

我有一个数据表,用于存储我正试图用R的formattable包着色的几只股票的每日/每周/每月回报。我希望负回报是红色,正回报是绿色。或者想象一下,为正值和负值设置一个单独的梯度-因此,如果苹果一天下跌10%,它将是暗红色,如果亚马逊下跌2%,该单元格将是浅红色-反之亦然,正回报为浅绿色和深绿色

我的问题是当我使用红色绿色渐变时,中间的颜色看起来是棕色的。下面的代码以透明/白色作为渐变的低端,绿色作为高端,但很难区分

我的datatable看起来像:

Stock day  week   month
AAPL   1.5  3.2   10.6
AMZN   3.2  5.3   4.4
BA    -2.1 -4.0  -10.5
PYPL   -5  -8.5  -12.1



Green <- "#71ca99"

sign_formatter <- formatter("span", 
                            style = x ~ style(color = ifelse(x > 0, "green", 
                                                             ifelse(x < 0, "red", "black"))))
sign_formatter(c(-1, 0, 1))

returns <- formattable(stocks_df, align =c("l","c","c","c","c"), list(
  `Stock` = formatter("span", style = ~ style(color = "grey",font.weight = "bold")), 
  daily_return = color_tile("transparent", Green),
  week_return = color_tile("transparent", Green),
  month_return = color_tile("transparent", Green)))
@dc37

我使用的正是你建议的代码——颜色非常好用。但是,当我像下面的例子那样按周收益率排序时,为了得到本周表现最好的股票,当我试图按表现最差的股票排序时,并不是将最高到最低的股票排序,而是有相同的问题

下面是我的formattable输出的图片。我还在Shiny中运行这个,不确定这是否是导致排序错误的原因


一种可能的解决方案是创建多个ifelse语句,以便根据每列的值设置5种不同的颜色:红色/浅红色/白色/浅绿色/绿色

以下是一种可能的方法:


测试一个可能的解决方案是创建多个ifelse语句,以便根据每列的值设置5种不同的颜色:红色/浅红色/白色/浅绿色/绿色

以下是一种可能的方法:


不客气;。如果你认为这个答案满足你的问题,你可以接受它和/或投票让人们知道这个问题已经解决了。请参阅此处的更多信息:当我对数据表进行排序时,它没有正确地将最高回报排序为最低回报,反之亦然。知道为什么会这样吗?你把桌子分类是什么意思?你能编辑你的问题并添加你用来排序表格的代码和它在formattable中的样子吗?当我通过formattablestocks_df[orderweek,]将数据帧排序到我的r会话中时。。。。它给了我正确的分类。请仅尝试formattable命令而不使用shiny。如果输出是正确的,这意味着它与Shiny以及数据帧的读取方式有关。所以看起来Shinny是引起这个问题的原因,不客气;。如果你认为这个答案满足你的问题,你可以接受它和/或投票让人们知道这个问题已经解决了。请参阅此处的更多信息:当我对数据表进行排序时,它没有正确地将最高回报排序为最低回报,反之亦然。知道为什么会这样吗?你把桌子分类是什么意思?你能编辑你的问题并添加你用来排序表格的代码和它在formattable中的样子吗?当我通过formattablestocks_df[orderweek,]将数据帧排序到我的r会话中时。。。。它给了我正确的分类。请仅尝试formattable命令而不使用shiny。如果输出是正确的,这意味着它与Shiny以及数据帧的读取方式有关。看来是Shiny造成了这个问题