Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
760 views
in Technique[技术] by (71.8m points)

ggplot2 - Using 2+ legends from R to plotly / plot.ly

I am using R's ggplot to create a static plot and pass that on to plot.ly to create an interactive plot. My aim to project a categorical variable to the color and a numeric variable to size. With R's [iris] data that works perfect - Like that:

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/

Now, I have my own dataset, 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                                                                                

When I use only the country as categorical variable, it works, too...

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

but when I try to map 'total' to the size of the marker

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

I get this error, despite 'total' obviously being a numeric value.

Error in L$marker$size * marker.size.mult : non-numeric argument to binary operator

What is the problem? Any ideas?

And onther thing (maybe I need to ask that in a separate question): How can I customise the little pop-up box that appears on hover?

Thanks a lot!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You ran into a bug, which we now fixed it.

Please reinstall and reload the "plotly" package, re-instantiate your py object and it should work now: https://plot.ly/~marianne2/38/or-illn-vs-or-edu/


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...