【发布时间】:2018-03-18 05:02:42
【问题描述】:
我想使用 ggplotly 绘制 ggplot2 图像 我想要做的是最初绘制灰色填充的矩形,没有任何美学映射,然后在第二步中绘制瓷砖并根据美学改变颜色。当我使用 ggplot 时我的代码正在运行,但是当我尝试使用 ggplotly 将我的图形转换为交互式时崩溃
这是一个示例代码
library(ggplot2)
library(data.table)
library(plotly)
library(dplyr)
x = rep(c("1", "2", "3"), 3)
y = rep(c("K", "B","A"), each=3)
z = sample(c(NA,"A","L"), 9,replace = TRUE)
df <- data.table(x,y,z)
p<-ggplot(df)+
geom_tile(aes(x=x,y=y),width=0.9,height=0.9,fill="grey")
p<-p+geom_tile(data=filter(df,z=="A"),aes(x=x,y=y,fill=z),width=0.9,height=0.9)
p
但是当我输入这个时
ggplotly(p)
我收到以下错误
[.data.frame(g, , c("fill_plotlyDomain", "fill")) 中的错误:
选择了未定义的列
我使用的版本是
> packageVersion("plotly")
1‘4.7.1
packageVersion("ggplot2")
1‘2.2.1.9000’
##########亚瑟的编辑示例 p<-ggplot(df)+
geom_tile(aes(x=x,y=y,fill="G"),width=0.9,height=0.9)
p<- p+geom_tile(data=filter(df,z=="A"),aes(x=x,y=y,fill=z),width=0.9,height=0.9)
p<-p+ scale_fill_manual(
guide = guide_legend(title = "test",
override.aes = list(
fill =c("red","white") )
),
values = c("red","grey"),
labels=c("A",""))
p
这行得通 但是 ggplotly(p) 在图例中添加了标记为 G 的灰色条
【问题讨论】:
-
您好!您是否有任何理由不想使用自定义
+scale_fill_manual()直接通过aes(x=x,y=y, fill=z)着色? (ggplot2.tidyverse.org/reference/scale_manual.html) -
嗨 最后这就是我所做的。但我想隐藏传说中的灰色瓷砖。这再次适用于 ggplot 并正确使用 guide_legend(override.aes)) 和图例。但是当我再次使用 ggplotly 时,传奇再次出现
-
我添加了一个例子来更好地解释我的意思
-
所以您真正的问题是:“如何使用 ggplotly 隐藏图例中的选定键?”我理解正确吗?
-
对于操作问题和要求,
scale_fill_manual可能并不总是需要的解决方案。我们能不能在 GitHub 中为它创建一个问题。