标签: flextable

GWT FlexTable性能和优化

我正在研究GWT项目,我们使用FlexTable来显示一些数据.我知道我们应该使用CellTable,因为它具有更好的性能,但FlexTable更容易设计样式(特定样式的单元格),并且更容易更新特定的单元格.

要接收表的更新,我们正在使用WebSockets.我们现在面临的问题是,当通过WebSockets每秒发生超过100次更新时,CPU负载会很高.来自WebSocket连接的每条消息都包含表中多个单元格的更新.所以在实践中,每秒应该有超过100个更新,应该在FlexTable中呈现.带有4GB RAM的3GHz i5的CPU负载约为50%.如果我禁用数据的实际呈现(注释掉setText()方法调用),则CPU负载下降到5-10%.所以我知道DOM更新是瓶颈,而不是代码的其他部分.

它会更好吗?

  1. 请改用Grid
  2. 切换到CellTable(但是如何更新单元格更新)?
  3. 使用JS/JSNI来处理DOM而不是FlexTable setText()

是否有更好的方法来实现表并提高性能?

我试图谷歌,如果有人有类似FlexTable的问题,但只发现一般认为它只是缓慢,没有具体.我们完全使用JavaScript完成应用程序原型,每秒100次更新,CPU负载大约为15%

更新
Dropping css淡入淡出效果,我们用来表示单元格值的变化,将CPU负载降低了约10%.所以似乎DOM不是唯一的问题.

gwt flextable

5
推荐指数
1
解决办法
3519
查看次数

在docx中将标题添加到flextable

如何将标题添加到呈现给docx的弹性表中?编辑:目的是产生一个适当的标题,可以在文档中引用该标题以产生表和内联引用的列表。

iris.t <-
  iris[1:5,] %>%
  regulartable() %>% 
  style(pr_c = officer::fp_cell(vertical.align = "bottom",
                                border.bottom = officer::fp_border(width = 2)), part = "header") %>% 
  rotate(j = names(iris)[-c(1:2)],
         rotation = "tbrl", part = "header", align = "bottom") %>% 
  height(height = max(dim_pretty(., part = "header")$widths), part = "header") %>% 
  width(width = dim_pretty(.,part = "body")$widths)

iris.t 
Run Code Online (Sandbox Code Playgroud)

r flextable knitr r-markdown

5
推荐指数
1
解决办法
1326
查看次数

将 R Markdown 渲染为 MS Word 时页面上 flextable 的对齐方式

flextable在我的 R Markdown 文档中自定义表格时,我一直很幸运。但是,我正在努力更改页面上表格的位置。默认情况下,表格似乎以页面为中心。我希望我的一张表格与左边距对齐。我怎么做?

r flextable

5
推荐指数
1
解决办法
1934
查看次数

表和图交叉引用官R

我希望能够使用Officer R包交叉引用Word文档中的表格或图形。

到目前为止,我已经看过这些材料,但是它们似乎并没有解决的方法:https : //davidgohel.github.io/menz/articles/word.html#table-and-image-captions 和类似的问题 为在docx中可伸缩

在这两种方法中,我只能插入标题作为2级标题,而不能插入真正的表标题。

我想要在Word中执行的操作是插入->交叉引用,然后转到引用类型:表格,然后在此处查看我的标题。现在,我只能在“编号”项下看到标题。

此功能是否存在于官员或其他任何地方?

r caption flextable officer

5
推荐指数
1
解决办法
410
查看次数

合并flextables并保留格式的方法

假设我有 2 个 flextables:

ft1 <- regulartable(head(iris))
ft2 <- regulartable(tail(iris))
Run Code Online (Sandbox Code Playgroud)

它们具有不同的格式:

ft1 <- bg(ft1, bg="green")
ft2 <- color(ft2, color = "blue")
Run Code Online (Sandbox Code Playgroud)

有没有办法在它们已经是 flextables 之后合并这两个,并保持格式?

我可以使用这个合并它们:

ft3 <- regulartable(rbind(ft1$body$dataset, ft2$body$dataset))
Run Code Online (Sandbox Code Playgroud)

但我丢失了所有格式。

我知道在转换为 flextables 之前合并数据帧会更容易,但是我的实际数据的生成方式很困难,因为我试图合并的两个 flextables 是我编写的其他函数的结果。

编辑:

目的是保持单独的格式,如下所示:

在此处输入图片说明

r flextable

5
推荐指数
1
解决办法
658
查看次数

创建 flextable 后删除 flextable 列

我基于 csv 文件创建了一个 flextable,我在上面添加了一些样式,更改了一些单元格。然后我想将它添加到文档之前删除这个 flextable 的特定列。有没有办法创建 flextable 的副本并指定 col_keys?

mydf <- GetData(....)
cols <- names(mydf)
myft <- flextable(mydf, col_keys = cols)
# Adding style to ft...
# ....

# Here I want to remove one column to the ft (and only here, not when first creating the ft)
# something as:
# ft <- CreateCopyOfFlextable(ft,cols[-which(cols=='COLB')])
#
my_doc <- read_docx()
my_doc <- my_doc %>%  body_add_par("")   %>%
  body_add_flextable(value = ft) 

print(my_doc, target = 'c:/temp/doc.docx')
Run Code Online (Sandbox Code Playgroud)

flextable

5
推荐指数
2
解决办法
1255
查看次数

使用 Word 输出在 R Markdown 文档中循环 Flextables

我希望在单个 R Markdown 文档中打印多个 flextables。这在使用 html 输出时并不具有挑战性,但我需要 Word 输出。

对于 html 输出,以下 R Markdown 代码(示例取自https://davidgohel.github.io/flextable/articles/offcran/examples.html#looping-in-r-mardown-documents)生成具有多个 Flextables 的文档:

---
output:
  html_document: default

---

```{r}
library(htmltools)
library(flextable)

ft <- flextable(head(iris))
tab_list <- list()
for(i in 1:3){
  tab_list[[i]] <- tagList(
    tags$h6(paste0("iteration ", i)),
    htmltools_value(ft)
  )
}
tagList(tab_list)
```
Run Code Online (Sandbox Code Playgroud)

我一直无法使用 Word 文档输出获得等效的输出。How to knit_print flextable with loop in a rmd file 中提出的解决方案 同样适用于 html 输出,但我未能使其在 Word 输出中正确呈现。

任何有关与上述示例等效的 R Markdown Word 文档输出的建议都会非常有帮助!

r flextable knitr r-markdown

5
推荐指数
1
解决办法
606
查看次数

如何将表格添加到ggplot?

我正在尝试将(在单个图表中)常规ggplot图表与使用flextable.

考虑以下示例:

library(tidyverse)
library(patchwork)

mydf <- tibble(a = c(1,2,3,4,5,4),
               b = c(4,4,4,3,3,3))

p1 <- mydf %>% ggplot(aes(x = a, y = b, color = as.factor(b))) + geom_point()

p2 <- mydf %>% flextable::flextable()
Run Code Online (Sandbox Code Playgroud)

p2 好像

在此处输入图片说明

但不幸的是我不能将它与 p1

> p1 + p2
Error: Don't know how to add p2 to a plot
Run Code Online (Sandbox Code Playgroud)

我们可以做什么?谢谢!

r ggplot2 flextable patchwork

5
推荐指数
3
解决办法
5620
查看次数

在 R 的 flextable 包中将数字列格式化为百分比

例如我正在使用虹膜数据:

library(flextable)
library(officer)
library(magrittr)

ft_test <- head(iris) %>% flextable() %>% 
  colformat_num(j = c("Sepal.Length", "Sepal.Width",
                             "Petal.Length", "Petal.Width"), digits = 1)
Run Code Online (Sandbox Code Playgroud)

如果我希望有百分比格式的“Petal.Width”值,正确的语法是什么?我找不到 colformat_percent 函数。有没有办法使用flextable语法来弥补它?

r flextable officer

5
推荐指数
2
解决办法
3317
查看次数

修改弹性单元格的一部分的格式

我想修改单元格的一部分的格式,同时保留其余文本不修改以包含在 .docx 报告中:
例如,Brill (菱形菱形) 位于第 22-32 分区(波罗的海)

我的数据是用 HTML 标签设置的,我一直在尝试使用该display()函数对其进行修改。我的示例(有点明显)修改了整个单元格。我希望pattern可以修改该参数以{{moustaches}}使嵌套格式成为可能,但我没有任何运气。

library(flextable)
library(officer)
library(dplyr)

data <- structure(list(Description = c("Brill (<em>Scophthalmus rhombus</em>) in subdivisions 22-32 (Baltic Sea)", 
                                       "Cod (<em>Gadus morhua</em>) in subdivisions 22-24, western Baltic stock (western Baltic Sea)", 
                                       "Cod (<em>Gadus morhua</em>) in subdivisions 25-32, eastern Baltic stock (eastern Baltic Sea)", 
                                       "Dab (<em>Limanda limanda</em>) in subdivisions 22-32 (Baltic Sea)", 
                                       "Flounder (<em>Platichthys flesus</em>) in subdivisions 22 and 23 (Belt Seas and the Sound)", 
                                       "Flounder …
Run Code Online (Sandbox Code Playgroud)

r flextable officer

4
推荐指数
1
解决办法
1653
查看次数

标签 统计

flextable ×10

r ×8

officer ×3

knitr ×2

r-markdown ×2

caption ×1

ggplot2 ×1

gwt ×1

patchwork ×1