2

ggplotly を使用して ggplot2 画像をプロットしたいと思います。私がやろうとしているのは、最初に美的マッピングなしで灰色の塗りつぶしの長方形をプロットし、次に 2 番目のステップでタイルをプロットし、美学に基づいて色を変更することです。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> ##########アーサーの例を編集

     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 というラベルの付いた灰色のバーを追加します

4

3 に答える 3

0

[これはまだ回答ではないことに注意してください] (コメントの制限を超えているため、参考のために入れてください。)

問題はかなり複雑です。

のコードのデバッグを終了しましたplotlyここで起こっているようです。

GitHubでイシューをオープンしました

問題を再現するための最小限のコードを次に示します。

library(ggplot2)

set.seed(1503)

df <- data.frame(x = rep(1:3, 3),
                 y = rep(1:3, 3),
                 z = sample(c("A","B"), 9,replace = TRUE), 
                 stringsAsFactors = F)

p1 <- ggplot(df)+
  geom_tile(aes(x=x,y=y, fill="grey"), color = "black")

p2 <- ggplot(df)+
  geom_tile(aes(x=x,y=y),fill="grey", color = "black")

class(plotly::ggplotly(p1))
#> [1] "plotly"     "htmlwidget"
class(plotly::ggplotly(p2))
#> Error in `[.data.frame`(g, , c("fill_plotlyDomain", "fill")): undefined columns selected
于 2019-07-04T13:03:12.083 に答える