Para plotar com R, devo aprender ggplot2 ou ggvis? Não quero necessariamente aprender ambos se um deles é superior em qualquer aspecto. Por que a comunidade R continua criando novos pacotes com funcionalidades sobrepostas? A postagem do blog de introdução não menciona uma palavra por que ggvis foi criado, visto que já existe um pacote de plotagem sofisticado ggplot2.
Comentários
Resposta
Comece com ggplot2. Ele cria gráficos estáticos.
Além dos gráficos estáticos, o ggvis também pode ser usado para criar gráficos interativos. você aprendeu a sintaxe do ggplot2, então a sintaxe para adicionar interatividade para criar gráficos do ggivs seguirá naturalmente.
Comentários
- Isso é impreciso (talvez estava correto no momento da redação). O ggvis pode definitivamente ser usado para criar gráficos estáticos. O fato de também permitir plotagens interativas é um recurso, não uma limitação. Um exemplo simples de um gráfico estático:
library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Resposta
Eu quero expandir um pouco a resposta de Dianne Cook. Como ela disse, ggplot2 é para criar plotagens estáticas, ggvis é para plotagens interativas. Existem várias implicações para isso:
Tipo de arquivo A saída ggvis é HTML incluindo arquivos CSS e javascript. Ggvis não produz arquivos de imagem comuns naturalmente. Ggplot2 produz imagens comuns, que podem então ser embutido em HTML ou pdf ou gif ou enviado por e-mail, ou qualquer outra coisa. ggvis, se você quiser enviar o arquivo por e-mail, você “está compactando novamente um diretório de arquivos HTML para serem visualizados em um navegador.
Animação Uma consequência disso é que se você quiser criar uma animação, pode fazer o frames no ggplot2 e mesclá-los, mas não há uma maneira natural de fazer isso com ggvis. ggvis agindo interativamente irá animar “ao vivo”, mas esses são tipos diferentes de animação. Se houver mais acontecendo por frame do que o ggvis pode processar , você não pode contornar isso (pelo menos de uma forma natural) gerando as imagens e fazendo o filme em segundo plano. Da mesma forma, o usuário não pode baixar um filme ou arquivo gif do ggvis para reproduzi-lo.
Agora, em meu projeto atual, mudei de ggplot2 para ggvis porque ggplot2 era muito lento para animar interativamente. Mas, também gostaria que o usuário, depois de brincar com as configurações, pudesse clicar em “ir” e baixar um filme de animação suave e em velocidade total do que fez. Não descobri como fazer isso usando ggvis, mas seria um bolo usando ggplot2.
Velocidade ggvis é muito, muito, muito mais rápido do que ggplot2, especialmente ao alterar dados. Cada gráfico ggplot2 tem um segundo ou alguns atrasos. O ggvis tem um segundo ou mais quando você cria o gráfico pela primeira vez, depois disso, a alteração dos dados é perfeita – o ggvis pode ser “reativamente” vinculado aos dados para que seja atualizado sempre que os dados forem alterados. Com o ggplot2, todo o enredo será redesenhado.
Estilo & Aparência gráficos ggplot2 parecem um pouco melhor, à primeira vista, do que plotagens ggvis. Os gráficos ggplot2 são bastante elegantes. Os gráficos ggvis são mais simples, mas estão crescendo em mim. Existem também extensões para ggplot2, como os pacotes xkcd e wesanderson, onde não há analogia para ggvis. Os gráficos ggplot2 parecem todos feitos pela mesma pessoa (o autor do ggplot2) e isso se cansa depois de um tempo.
Completude Existem tipos de plotagem que você pode criar no ggplot2 que o ggvis não suporta, pelo menos até aqui. Por exemplo, não há elemento de plotagem “tapete” no ggvis. Já vi um ou dois coropletos feitos com ggvis, mas ainda não há suporte integrado natural. O ggplot2 tem coordenadas polares (ou seja, gráficos de pizza) , ggvis não. Também ausente em ggvis (e disponível em ggplot2 ou em uma extensão ggplot2): boxplots; gráficos de contorno; mapas de calor naturais; gráficos de correlação natural; gráficos de pontos; gráficos de violino; gráficos de rede; dendrogramas. Claro que “tenho certeza algumas pessoas muito inteligentes podem criar tudo isso no ggvis, mas eu não sou tão inteligente.
Anotações ggplot2 tem uma estrutura de anotação muito boa, talvez subutilizada, mas o ggvis não.
Subtramas & Facetas ggplot2 tem um muito bom , mas talvez um tanto limitado, recurso de “facetamento” Você também pode combinar vários gráficos ggplot2 usando o pacote de grade. No momento, você não pode fazer nada com ggvis. Os gráficos ggvis não podem ser combinados em uma única imagem (porque eles não são imagens, eles “são” páginas da web “ativas”) e não são compatíveis com nenhum tipo de facetação ou subplotagem. Isso deveria estar no pipeline.
Flexibilidade visual ggplot2 deseja que cada plotagem tenha a mesma aparência, o que significa que o autor prefere estilisticamente. de jeito nenhum, por exemplo, ter um gráfico com vários eixos y em ggplot2. ggvis pode. ggvis é muito mais flexível do que ggplot2. É muito mais fácil fazer coisas como ocultar legendas, combinar várias legendas em uma, usar escalas diferentes para diferentes coisas na mesma trama, etc.
Personalização profunda Se você deseja criar, digamos, um nova escala inteligente, não é muito difícil de fazer isso no ggplot2 (embora seja bastante confuso). Simplesmente não parece haver uma maneira de fazer isso no ggvis. Talvez ainda não seja.
Séries temporais ggplot2 não gosta de plotar séries temporais. Ele pode , mas não quer . Na verdade, nenhum deles quer; ambos insistem em receber dados em um data.frame e não podem lidar xts ou objetos de zoológico. Eles também não têm recursos integrados para dividir uma série temporal. Mas o ggvis não luta contra a série temporal com tanta força quanto o ggplot2. Isso é em parte porque é muito rápido atualizar os dados em um gráfico ggvis, eu suponho. Se você quiser plotar uma série do tempo, você terá que bater em qualquer um deles até a apresentação, mas o ggvis é muito menos passivo-agressivo sobre isso .
Eles têm a mesma sintaxe? Mais ou menos … Há “muito em comum entre eles , e aprender a pensar no estilo de um ajudará a se adaptar ao estilo do outro. Em particular, ambos são projetados para que todas as chamadas de plotagem sejam canalizadas uma para a outra em uma única linha de A principal vantagem disso é que torna a depuração e criação de perfil realmente difícil e basicamente torna os recursos de depuração / criação de perfil em coisas como Rstudio inúteis. Fora isso, eles são sintaticamente muito diferentes. Algumas coisas que são difíceis no ggplot2 são fáceis no ggvis. Algumas coisas que são fáceis no ggplot2 são impossíveis no ggvis. E vice versa. (Tenho um pouco de preferência pela maneira como o ggvis faz as coisas, que acho mais fácil de entender.)
Bugs ggvis ainda tem alguns. Às vezes, ele se comporta de maneira estranha. Às vezes, porém, os enredos desaparecem aleatoriamente por motivos que levam horas para serem contornados e fazem muito pouco sentido. Os desenvolvedores admitem isso livremente, o ggvis ainda não está pronto para a produção. Se você lidar com qualquer complexidade, irá descobrir que eles não estão brincando.
Conclusão: Aprender plotagem intermediária em cada um leva cerca de 16 horas. Portanto, realisticamente, você provavelmente aprenderá ambos.
Comentários
- Ótima comparação
- O que é ggvis ou lattice ou rgl mais rápido? (para grandes conjuntos de dados)
- +1 redação fantástica. Eu concordo com tudo aqui baseado em minhas experiências com ambos até agora.
- Olá, E quanto ao ggvis vs rcharts?
- SÉRIE DE TEMPO: ggplot2 definitivamente venceu com a expansão ggfortify. Veja esta excelente documentação sobre isso: rpubs.com/sinhrks/basics .
Resposta
Acho que a mensagem que aparece depois de library(ggvis)
é autoexplicativa:
A API ggvis está evoluindo rapidamente. Recomendamos fortemente que você não confie nisso para a produção, mas fique à vontade para explorar. Se você encontrar um bug claro, envie um exemplo mínimo reproduzível em https://github.com/rstudio/ggvis/issues . Para perguntas e outras discussões, use https://groups.google.com/group/ggvis .
Comparado ao ggplot2, o ggvis ainda carece de alguns recursos e polimento (não há como adicionar título a um gráfico, por exemplo, títulos de eixo sobrepostos a rótulos de escala e há mais, facetação não é suportada, etc.) No por outro lado, a sintaxe do ggvis parece um pouco mais limpa e a interatividade é realmente incrível.
De acordo com minha própria experiência, o ggvis é essencial se você está construindo um aplicativo brilhante. Então, os benefícios de ter um mecanismo de plotagem de gráficos amigável para a Web e R superam em muito qualquer deficiência que ele tenha atualmente.
Se você deseja fazer gráficos estáticos para exploração de dados, então ggplot2 é uma biblioteca madura com muitos recursos interessantes e com uma comunidade saudável de usuários e muitos recursos para aprender.
A filosofia por trás de ambos os pacotes é semelhante, então as habilidades podem ser facilmente transferidas de um pacote para outro.
Resposta
A comunidade R continua surgindo com novos (e frequentemente sobrepostos) pacotes por uma série de razões:
1) Alguém deseja mudar algo ou adicionar algo que não está disponível em um pacote existente, mas muito dele se sobrepõe (portanto, muitos pacotes que fazem regressão)
2) Alguém escreve um pacote como uma tarefa
3) Escrever pacotes é divertido (se você gosta desse tipo de coisa)
4) Eles não sabem que o pacote original existe
Comentários
- Em relação ao exemplo específico e ao seu ponto 4: ggvis foi criado pelas mesmas pessoas que ggplot2. O ponto importante aqui é que o uso de ggplot2 é tão difundido que se tornou impossível implementar mudanças sem quebrar muitos códigos existentes / pacotes dependentes.
- Esse tipo de reinvenção de pacote preexistente é destinado a acontecem exatamente como recessões econômicas nas sociedades capitalistas?
- @Peter: Como alguém de fora do R, isso me parece um comentário justo, mas (mais raramente) você não ‘ t responda a pergunta!
- @NickCox Eu respondi uma das perguntas que estão na pergunta. :-).
- @Peter Muito justo. Uma referência cruzada para stats.stackexchange.com/questions/58966/… é, portanto, considerada pertinente.
ggplot2
. Para visualização na web, considereggvis
.