[英]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.