我在扩展ggflags
使用 SVG方面取得了一些成功,现在我正试图让这个扩展与ggplotly()
. Plotly 文档中有一个关于翻译自定义 geom 的好部分,它本质上归结为to_basic
为您的 geom 提供方法或geom2trace
方法。
老实说:我在这里超出了我的深度,我正在尝试根据两个命名示例拼凑一些东西:ggmosaic
和ggalt
. 但是一些简单的事情,比如:
#' @name plotly_helpers
#' @title Plotly helpers
#' @description Helper functions to make it easier to automatically create plotly charts
#' @importFrom plotly to_basic
#' @export
to_basic.GeomFlag <- getFromNamespace("to_basic.GeomPoint", asNamespace("plotly"))
运行时给我一个错误devtools::document()
:
object 'to_basic.GeomPoint' not found
如果我将它更改为 GeomLine 包文档并安装,但一个简单的绘图显示如下:
df = data_frame(
f = rep(1:5, each = 4),
x = rep(1:4, times = 5),
y = c(1:2, 2:1, 2:1, 1:2, 1:2, 2:1, 2:1, 1:2, 2:1, 1:2),
s = c(1:4, 4:1, 1:4, 4:1, 1:4),
c = rep(c('au', 'us', 'gb', 'de'), 5))
p1 = ggplot(df) + geom_flag(aes(x = x, y = y, size = s, frame = f, country = c)) + scale_country()
ggplotly(p1)
显然 GeomLine 是不对的——GeomPoint 似乎是这个扩展更自然的点——但它可能只是我无法减少它,我需要实现geom2trace
. 但我对这两种方法需要输入或输出的内容并不太了解。任何人都可以帮忙吗?还有其他ggplot2
实现 Plotly 接口的扩展示例吗?
编辑:我已经查看了 的一些内置示例geom2trace
,但我不确定我可以在这里走得更远。我有点希望我可以用自定义 grobs 代替 GeomPoint 点,比如 with grid
,但似乎 Plotly API 只需要基本的点属性。