簡體   English   中英

使用來自 R 的 2+ 個圖例來 plotly/plot.ly

[英]Using 2+ legends from R to plotly / plot.ly

我正在使用 R 的 ggplot 創建一個靜態圖並將其傳遞給 plot.ly 以創建一個交互式圖。 我的目標是將分類變量投影到顏色,將數字變量投影到大小。 使用 R 的 [iris] 數據完美運行 - 就像這樣:

testplot <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color=Species, size=Petal.Length)) + geom_point()
py$ggplotly(testplot)

https://plot.ly/~SyTpp/11/sepalwidth-vs-sepallength/

現在,我有了自己的數據集,a,...

> a
       Country OR_Edu OR_Illn total num
         Peru   1.75    1.67 25367  10
  Philippines   1.33    0.43 33543   1
       Rwanda   0.29    4.00  6443   2
      Senegal   5.00    1.60 32743   3
    Sri Lanka  12.00    6.33 21743   4
        Sudan  17.00    0.86 27227   5
     Tanzania   0.57    0.71 24312   6
       Uganda  13.00    0.60 35466   7
      Vietnam   1.62    1.50 34639   8
      Zambia   0.86    1.00 16735   9
    Zimbabwe   1.25    1.00 33349  10
> summary(a)
        Country      OR_Edu          OR_Illn          total            num        
 Peru       :1   Min.   : 0.290   Min.   :0.430   Min.   : 6443   Min.   : 1.000  
 Philippines:1   1st Qu.: 1.055   1st Qu.:0.785   1st Qu.:23028   1st Qu.: 3.500  
 Rwanda     :1   Median : 1.620   Median :1.000   Median :27227   Median : 6.000  
 Senegal    :1   Mean   : 4.970   Mean   :1.791   Mean   :26506   Mean   : 5.909  
 Sri Lanka  :1   3rd Qu.: 8.500   3rd Qu.:1.635   3rd Qu.:33446   3rd Qu.: 8.500  
 Sudan      :1   Max.   :17.000   Max.   :6.330   Max.   :35466   Max.   :10.000  
 (Other)    :5                                                                                

當我只使用國家作為分類變量時,它也有效......

testplot <- ggplot(a, aes(OR_Edu, OR_Illn, color=Country)) + geom_point()
py$ggplotly(testplot)

但是當我嘗試將“總計”映射到標記的大小時

testplot <- ggplot(a, aes(OR_Edu, OR_Illn, color=Country, size=total)) + geom_point()
py$ggplotly(testplot)

我收到此錯誤,盡管“總計”顯然是一個數值。

L$marker$size * marker.size.mult 中的錯誤:二元運算符的非數字參數

問題是什么? 有任何想法嗎?

還有一件事(也許我需要在一個單獨的問題中提出這個問題):如何自定義懸停時出現的小彈出框?

非常感謝!

你遇到了一個錯誤,我們現在修復了它。

請重新安裝並重新加載“plotly”包,重新實例化你的py對象,它現在應該可以工作了: https ://plot.ly/~marianne2/38/or-illn-vs-or-edu/

要編輯懸停框中顯示的內容:

# Load "plotly"
library(plotly)
# Open a Plotly connection
py <- plotly()

# Retrieve a Plotly graph in R
hover_text <- py$get_figure("PlotBot", 81)

str(hover_text$data)
# This list has 4 elements, which all have dimension (attribute) 'text'

# You can overwrite them one by one, say
hover_text$data[[1]]$text[1]
hover_text$data[[1]]$text[1] <- "US"

# If you need something functional, I would recommend defining the necessary
# functions and using sapply()

# Plotly graph with hover text we just edited
py$plotly(hover_text$data, kwargs=list(layout=hover_text$layout))

暫無
暫無

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

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