我正试图在交互式脉络图上添加一个浮雕。我看到在非交互式的环境中,这 得以 使用 alpha
比例尺 geom_raster
和 fill
比例尺 geom_polygon
. 这样就可以了。
library(ggplot2)
library(plotly)
# load raster data
volcano_raster <- as.data.frame(volcano)
volcano_raster <- reshape(data = volcano_raster,
direction = "long",
varying = colnames(volcano_raster),
timevar = "y",
v.names = "alpha",
idvar = "x")[,c("x", "y", "alpha")]
rownames(volcano_raster) <- NULL
volcano_raster$f <- 0
# create polygon data
volcano_polygon <- data.frame(x = c(1, 25, 25, 1, 25, 50, 50, 25, 50, 75, 75, 50, 75, 87, 87, 75),
y = rep(c(61, 61, 1, 1), 4),
order = rep(1:4, 4),
group = rep(1:4, each = 4),
fill = rep(1:4, each = 4))
# create plot (works)
p <- ggplot()
p <- p + geom_polygon(data = volcano_polygon,
aes(x = x,
y = y,
fill = fill,
group = group))
p <- p + geom_raster(data = volcano_raster,
aes(x = x, y = y, alpha = alpha))
p
但是,当我尝试着通过 ggplotly
,R抱怨说 fill
审美缺失。
> ggplotly(p)
Error in `[.data.frame`(g, , c("fill_plotlyDomain", "fill")) :
undefined columns selected
为了避免这个错误,我试着添加了一个虚拟的东西。fill
审美。然而,那么 ggplotly
不显示 alpha
阴影。
# create plot (works)
p <- ggplot()
p <- p + geom_polygon(data = volcano_polygon,
aes(x = x,
y = y,
fill = fill,
group = group))
p <- p + geom_raster(data = volcano_raster,
aes(x = x, y = y, fill = 0, alpha = alpha))
ggplotly(p)
我知道,从 此处 当使用一个geom时,ggplotly可以结合填充和alpha美学。这在我的情况下也是可行的。
p <- ggplot()
p <- p + geom_polygon(data = volcano_polygon,
aes(x = x,
y = y,
fill = fill,
group = group,
alpha = fill))
ggplotly(p)
遗憾的是,我无法计算出如何使用 ggplotly
使用 fill
本位 geom
和 alpha
的另一种审美。
EDIT
这个帖子 描述了一个通过使用 geom_point
而不是 geom_raster
. 但是,由于 size
的 geom_point
不像 width
的 geom_bar
)是以像素为单位给出的,而不是相对于分辨率。因此,很难找到正确的值来表示 size
争论,使得它在交互式环境中相当不切实际。