3

我在扩展ggflags使用 SVG方面取得了一些成功,现在我正试图让这个扩展与ggplotly(). Plotly 文档中有一个关于翻译自定义 geom 的好部分,它本质上归结为to_basic为您的 geom 提供方法或geom2trace方法。

老实说:我在这里超出了我的深度,我正在尝试根据两个命名示例拼凑一些东西:ggmosaicggalt. 但是一些简单的事情,比如:

#' @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 只需要基本的点属性。

4

0 回答 0