plotly将ggplot2彩色矩形转换为灰色

时间:2017-02-14 09:53:26

标签: r ggplot2 plotly

我试图制作一个包含矩形的图。我正在使用ggplot2创建它们,并希望通过将它们转换为plotly对象来“使它们成为交互式”。 现在的问题是,转换为plotly似乎松散了ggplot2中指定的矩形颜色。

以下是一个小型自解释代码示例:

test.dat <- data.frame(xmin=c(0,1.5), ymin=c(-1,-1), xmax=c(1,2), ymax=c(1,1), col=c("blue", "red"))
ggp.test <- ggplot() + geom_rect(data=test.dat, aes(xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax), fill=test.dat$col) + theme_bw()
ggp.test

ply.test <- plotly_build(ggp.test)
ply.test

有趣的是,当我指定下面的悬停信息时,颜色是正确的:

test.dat <- data.frame(xmin=c(0,1.5), ymin=c(-1,-1), xmax=c(1,2), ymax=c(1,1), col=c("blue", "red"), hovinf=c("rec1", "rec2"))
ggp.test <- ggplot() + geom_rect(data=test.dat, aes(xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax, text=paste("hoverinfo:", hovinf)), fill=test.dat$col) + theme_bw()

ply.test <- plotly_build(ggp.test)
ply.test

有人可以解释这种现象吗?

1 个答案:

答案 0 :(得分:1)

它与指定颜色的方式有关。由于您直接添加fill参数而不是aes内部,因此没有任何美学将彼此分开。 ggplot似乎自动覆盖了这个,但它没有正确地导出到plotly。当您将hovinf添加为text aes时,它可以使用该美学来区分这些美学,并能够为其提供适当的颜色。添加另一种美学也使其有效,例如使用group

test.dat <- data.frame(xmin=c(0,1.5), ymin=c(-1,-1), xmax=c(1,2), ymax=c(1,1), col=c("blue", "red"))
ggp.test <- ggplot() + geom_rect(data=test.dat, aes(xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax, group = col), fill=test.dat$col) + theme_bw()
ggp.test

ply.test <- plotly_build(ggp.test)
ply.test