- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前在某些代码中将可 react 对象存储为对象。我希望能够将所述对象转换为 ggplot,但无论我做什么,我都会得到相同错误的变体。使用 blastula 的 add_ggplot 函数,我得到:
Error in UseMethod("grid.draw") :
no applicable method for 'grid.draw' applied to an object of class "c('reactable', 'htmlwidget')"
使用 ggplotify 的 as.ggplot 函数,我得到:
Error in UseMethod("as.grob") :
no applicable method for 'as.grob' applied to an object of class "c('reactable', 'htmlwidget')"
有人对如何达到预期结果有建议吗?
编辑:在回答一个我可能本来应该回答的问题时:reactable 源自一个非常普通的数据框。
df <- structure(list(Date = c("2019-02-09", "2019-02-09", "2019-02-09",
"2019-02-09", "2019-02-09", "2019-02-09", "2020-02-09", "2020-02-09",
"2020-02-09", "2020-02-09", "2021-02-09", "2021-02-09", "2021-02-09",
"2021-02-09"), Type = c("HUF", "HAD", "WOK", "STR", "HUF", "HAD",
"WOK", "STR", "HUF", "HAD", "WOK", "STR", "HUF", "HAD"), Value = c(12L,
226394L, 27566L, 217098L, 208463L, 9320L, 156607L, 19790L, 24541L,
1074419L, 17250L, 12249L, 43651L, 45121L)), class = "data.frame", row.names = c(NA,
-14L))
EDIT2:这是可 react 的代码,很抱歉之前没有包含它:
react_df <- reactable(df, highlight = TRUE, compact = TRUE,pagination = FALSE, columns = list(Date = colDef(name = "Last Recorded", align = 'center'), Type = colDef(name = "Category", align = 'center'), Value = colDef(name = "Change(s)", align = 'center', cell = data_bars(df, background = "white", border_width = "2px", bar_height = 3, align_bars = "left", text_position = "outside-end", max_value = 1, number_fmt = scales::percent))))
react_df
最佳答案
reactable 对象是一个 html 小部件,没有办法直接将其转换为 ggplot 对象。有一些方法可以实现它,比如将可 react 对象保存为 png,将 png 转换为光栅 Grob,然后使用 ggplotify:
library(grid)
library(png)
library(ggplotify)
save_reactable_test(react_df, "my_reactable.png")
img <- readPNG("my_reactable.png")
p <- as.ggplot(rasterGrob(img))
现在对象 p
在技术上是一个 ggplot:
class(p)
#> [1] "gg" "ggplot"
它有点看起来像原始表格:
p
但是,这实际上只是一个包装图像,在调整大小、编辑、更改主题元素等方面不会像普通的 ggplot 那样表现。
仅仅编写绘制您要查找的表格的ggplot代码真的不难。即使您丢失了原始数据,您也可以像这样从可 react 对象中恢复它:
library(rvest)
library(jsonlite)
df <- read_html(as.character(react_df$x$tag)) %>%
html_element("reactable") %>%
html_attr("data") %>%
parse_json() %>%
lapply(unlist) %>%
as.data.frame()
我们可以直接使用以下 ggplot 代码重新生成您的表格:
library(ggplot2)
ggplot(df, aes(y = rev(seq(nrow(df))))) +
geom_text(aes(x = 1, label = Date), hjust = 0) +
geom_text(aes(x = 2, label = Type), hjust = 0) +
geom_segment(aes(x = 3, xend = 3 + Value / max(Value), yend = stat(y)),
size = 2, color = "deepskyblue4") +
geom_text(aes(x = 3, label = paste0(Value, " (",
scales::percent(Value / sum(Value), 0.1), ")")),
hjust = 0, vjust = -0.8) +
geom_hline(yintercept = seq(nrow(df)) - 0.5, size = 0.05) +
geom_hline(yintercept = nrow(df) + 0.5) +
annotate("text", label = colnames(df), x = 1:3,
y = nrow(df) + 1, hjust = 0, fontface = 2) +
theme_void()
这是一个合适的 ggplot,看起来像原始的 reactable,完全可定制,并且在调整大小等情况下会按预期运行。
关于r - 将 reactable 转换为 ggplot,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73829821/
前 R 用户,我曾经通过 ggplotly() 函数广泛地结合 ggplot 和 plot_ly 库来显示数据。 刚到 Python 时,我看到 ggplot 库可用,但在与 plotly 的简单组合
ggplotly 使用 ggplot 删除 geom_line 图的图例。 见例如以下: library(plotly) g % ggplotly() 关于r - ggplotly 从 gg
我有一个 ggplot我试图以非常简约的外观制作线图的问题。我已经摆脱了图例,转而使用每行右侧的文本标签。如果标签不是那么长,它可能不会那么明显,但如果网格线停在最大 x 值(在这种情况下,在 201
我想使用相同的 ggplot 代码以我的数据框中的数字为条件生成 8 个不同的数字。通常我会使用 facet_grid,但在这种情况下,我希望最终得到每个单独数字的 pdf。例如,我想要这里的每一行一
当我在 ggplot 上使用 geom_text 时,与 ggplot 的“填充”选项发生冲突。 这是问题的一个明显例子: library(ggplot2) a=ChickWeight str(a)
是否可以结合使用 ggplot ly 和拼凑而成的ggplot? 例子 这将并排显示两个图 library(ggplot2) library(plotly) library(patchwork) a
我想绘制一个图表,其中 y 轴以百分比表示: p = ggplot(test, aes(x=creation_date, y=value, color=type)) + geom_line(aes
如何去除ggsave中的白边距? 我的问题和Remove white space (i.e., margins) ggplot2 in R一模一样。然而,那里的答案对我来说并不理想。我不想对固定但未知
我有一个带有一些文本层的条形图,在 ggplot 库中一切正常,但现在我想添加一些与 ggplotly 的交互性,但它无法显示文本层 我更新了所有软件包但问题仍然存在 df = read.table(
当我尝试在 ggplot 中为我的箱线图设置自定义宽度时,它工作正常: p=ggplot(iris, aes(x = Species,y=Sepal.Length )) + geom_boxplot(
我正在尝试为 ggplot 密度创建一个图例,将一个组与所有组进行比较。使用此示例 - R: Custom Legend for Multiple Layer ggplot - 我可以使用下面的代码成
所以我试图在一个多面的 ggplot 上编辑 y 值,因为我在编织时在情节上有几个不准确之处。我对 R 和 R Markdown 很陌生,所以我不太明白为什么,例如,美国的 GDP PPP 在美元金额
我需要在 python 条形图的 x 轴 ggplot 上格式化日期。 我该怎么做? 最佳答案 使用 scale_x_date() 格式化 x 轴上的日期。 p = ggplot(aes(x='dat
我想使用 ggplotly因为它的副作用相同ggplot甚至graphics做。我的意思是当我 knitr::knit或 rmarkdown::render我期望的 Rmd 文档 print(obj)
我在下面有一个简单的应用程序,它显示了一个 ggplot。 ggplot 在控制台中生成警告(见底部图片)。我想捕获警告,并将其显示在应用程序的情节下方。 这是我的代码: library(shiny)
如果显示的基本数据集很大(下面的示例工作代码),则在 Shiny 的应用程序中向/从 ggplot 添加/删除图层可能需要一段时间。 问题是: 有没有办法缓存 ggplot(基本图)并添加/删除/修改
我正在组合 ggplot 的多个绘图,使用网格视口(viewport),这是必要的(我相信),因为我想旋转绘图,这在标准 ggplot 中是不可能的,甚至可能是 gridExtra 包。 我想在两个图
我可以使用 lattice 在 R 中绘制相对频率直方图包裹: a <- runif(100) library(lattice) histogram(a) 我想在 ggplot 中获得相同的图形.我试
我需要重新安装 R,但我现在遇到了 ggplot 的一个小问题。我确信有一个简单的解决方案,我感谢所有提示! 我经常使用堆叠面积图,通常我通过定义因子水平并以相反的顺序绘制来获得所需的堆叠和图例顺序。
新的并且坚持使用ggplot: 我有以下数据: tribe rho preference_watermass 1 Luna2 -1.000 hypolimnic 2 OP10I-A1
我是一名优秀的程序员,十分优秀!