簡體   English   中英

R ggplotly dublicated legend

[英]R ggplotly dublicated legend

我嘗試生成一個情節,每個點代表一個事件。 Color,Size和faced_grid用於以可視方式提供其他信息。 該圖表在ggplot2中工作,但知道確切的數字通常很重要,因此需要一個交互式版本,可以將鼠標懸停在該點上並獲取信息。 我嘗試使用plotly-package中的函數ggplotly將繪圖轉換為交互式版本。 問題在於,圖例不僅顯示已使用屬性的不同狀態,還包含每個現有組合。 此外,它沒有顯示geom_rect的信息。

我找到了相關/類似的問題,但是他們使用了plot_ly函數而不是ggploty,或者沒有提供答案。

下面,使用mtcars數據集說明了同樣的問題:

library(plotly)

g = ggplot(mtcars,aes(x=mpg,y=disp,color = as.factor(cyl),size =as.factor(gear))) +
    geom_point() +
    geom_text(label = c(rep("A",nrow(mtcars)-5),rep("B",5)),color = "black",size=4) +
    geom_rect(data=data.frame(name="zone",Start=20,End = 30,ymin = -Inf,ymax = Inf),aes(xmin=Start, xmax=End, ymin=ymin, ymax=ymax,fill=name),inherit.aes = FALSE,alpha=0.3)+
    facet_grid(vs~am)
g

這是結果以及它應該是什么樣子: ggplot Graph

現在使用ggplotly

ggplotly(g)

結果如下: ggploty Graph

(1)圖例現在是用於顏色和大小的不同屬性的組合

(2)geom_rect在圖例中,但沒有顯示在圖表中

有誰知道如何在ggplotly中獲得與ggplot2相同的圖形? 我很感激每一個提示。 謝謝

戴夫

當你使用ggplotly時,我不知道如何修復圖例的組合。 但是,我可以解決第二個問題,如果你不使用Inf和-Inf,geom_rect將工作:

ggplotly(ggplot(mtcars,aes(x=mpg,y=disp, = as.factor(cyl),size =as.factor(gear))) +
             geom_rect(aes( xmin=20, 
                            xmax=30, 
                            ymin=0, 
                            ymax=max(mtcars$disp),
                            fill="Name"),
                       inherit.aes = FALSE, alpha=0.3) +
             geom_point() +
             geom_text(label = c(rep("A",nrow(mtcars)-5),rep("B",5)), = "black",size=4) +
             facet_grid(vs~am)) 

但是,傳說很糟糕。 我建議使用subplot在Plotly中創建相同的東西,我認為Ben提到的這個鏈接將幫助你創建每個子圖。 有一點需要注意的是,我在繪圖中描繪了圖例中不同大小的問題,而標記的大小會有所不同,因此不會有大小比例的圖例。 也許規模將是更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM