【发布时间】:2020-06-15 08:14:19
【问题描述】:
我有一个数据表,其中存储了几只股票的每日/每周/每月收益,我试图用 R 的 formattable 包着色。我希望负回报为红色,正回报为绿色。或者为了花哨,对正值和负值有一个单独的渐变 - 所以如果苹果一天下跌 10%,它会是深红色,如果亚马逊下跌 2%,那个单元格会是浅红色 - 反之亦然正回报(浅绿色和深绿色)。
我的问题是,当我使用红绿色渐变时,中间的颜色会呈现棕色。我下面的代码将透明/白色作为渐变的低端,将绿色作为渐变的上端,但很难区分。
我的数据表看起来像:
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
我正在使用您建议的确切代码 - 颜色效果很好。但是,当我像下面的示例那样按周回报率排序时,为了获得本周表现最好的股票,它并不是从最高到最低排序(当我尝试按表现最差的股票排序时遇到同样的问题)。
这是我的可格式化输出的图片。我也在 Shiny 中运行它,不确定这是否会导致排序错误。
【问题讨论】:
标签: r datatable formattable