【问题标题】:styleColorBar Center and shift Left/Right dependent on SignstyleColorBar 居中并左移/右移取决于符号
【发布时间】:2016-02-04 22:42:11
【问题描述】:

我希望创建条形,当使用 DT 时,datatable 出现在列的单元格中间,并根据单元格中的值是正数还是负数向左或向右伸出。

我已尝试使用函数 styleColorBar 并将参数 backgroundPosition 更改为 'left''center' 但每次尝试时,条形仍然出现在单元格的右侧,并且始终位于左侧。

我在 R 代码中找不到示例,但附上了一个可以在 Excel 上完成的示例;颜色不是必需的,但如果包含,那将是一个奖励。

【问题讨论】:

  • 这是一个有趣的问题,但它的呈现方式缺乏努力。请添加一个可重现的示例。您可以添加一个使用 backgroundPosition = 'left' 的最小示例,以便人们可以使用它并尝试找到解决方案。不太可能有人(包括我自己)花时间编写产生此处描述的情况的代码,然后尝试找到解决方案......
  • 我知道我写的东西不容易理解;已经重写了,所以读起来更好一些。可能仍然不是很好,但希望比以前更有意义!

标签: r datatable shiny dt


【解决方案1】:

您可以创建一个使用 CSS 渐变的自定义 styleColorBar 函数(与原始 styleColorBar 相同)来制作您想要的那种条形。

这是一个例子(对不起,长线,添加新行会破坏 CSS):

color_from_middle <- function (data, color1,color2) 
{
  max_val=max(abs(data))
  JS(sprintf("isNaN(parseFloat(value)) || value < 0 ? 'linear-gradient(90deg, transparent, transparent ' + (50 + value/%s * 50) + '%%, %s ' + (50 + value/%s * 50) + '%%,%s  50%%,transparent 50%%)': 'linear-gradient(90deg, transparent, transparent 50%%, %s 50%%, %s ' + (50 + value/%s * 50) + '%%, transparent ' + (50 + value/%s * 50) + '%%)'",
             max_val,color1,max_val,color1,color2,color2,max_val,max_val))
} 

使用一些测试数据:

data <- data.frame(a=c(rep("a",9)),value=c(-4,-3,-2,-1,0,1,2,3,4))

datatable(data) %>%
  formatStyle('value',
              background=color_from_middle(data$value,'red','blue'))

【讨论】:

  • 非常感谢,即使是多列也能完美运行!
  • 嗨@NiceE,我只是想知道你是否知道如何在 gt 包中完成同样的事情。有关更多详细信息,请查看我的 SO 问题stackoverflow.com/questions/64442840/…
猜你喜欢
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多