2014-09-29 11 views
2

Я использую ggplot для создания статического графика и передаю это на plot.ly для создания интерактивного сюжета. Моя цель - проецировать категориальную переменную в цвет и числовую переменную в размер. С [ирис] данных АиР, которая работает идеально - Как что:Использование 2+ легенд от R до plotly/plot.ly

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 
     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) 

, но когда я пытаюсь отобразить «всего» в размере го e marker

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

Я получаю эту ошибку, несмотря на то, что «total», очевидно, является числовым значением.

Ошибка в L $ маркерного $ размер * marker.size.mult: нечисловой аргумент бинарного оператора

В чем проблема? Есть идеи?

И другое (возможно, мне нужно задать вопрос в отдельном вопросе): Как настроить небольшой всплывающий ящик, который появляется при наведении?

Большое спасибо!

ответ

2

Я ответил вам по электронной почте, но я отправлю сюда для всех. ;)

Вы столкнулись с ошибкой, и мы смогли быстро исправить ее благодаря вашей обратной связи. :)

Пожалуйста, переустановите и перезагрузите «plotly» пакет, повторно создать экземпляр py объекта, и он должен работать сейчас: https://plot.ly/~marianne2/38/or-illn-vs-or-edu/

Позвольте мне ответить на ваш «зависания» вопрос в отдельном посте.

Еще раз спасибо за отзыв!

+0

Да, сейчас он работает - отлично! С удовольствием поиграем в бета-тестер и спасибо за создание plot.ly! Я отправлю еще один вопрос, регулирующий зависание сейчас ... – Sylvia

0

Хорошо, я могу переместить этот ответ там, где он принадлежит. Чтобы отредактировать то, что появляется в поле для зависания:

# 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))