Escolher entre qplot () e ggplot () em ggplot2 [fechado]

98

Estou começando a usar o grande ggplot2pacote para plotagem em R, e uma das primeiras coisas que me pergunto antes de cada plotagem é "bem, vou usar qplotou ggplot?"

Eu entendo que qplotfornece uma sintaxe mais simples enquanto ggplotpermite o máximo de recursos e flexibilidade, mas qual é a função que você mais usa, e você tem alguns casos de uso precisos para cada uma? Você usa principalmente qplote ggplotapenas para plotagens complexas ou ggplotsempre?

Obrigado pelo seu feedback !

Juba
fonte

Respostas:

81

Quanto a mim, se qplot e ggplot estiverem disponíveis, o critério depende se os dados estão armazenados em data.frame ou em variáveis ​​separadas.

x<-1:10
y<-rnorm(10)

qplot(x,y, geom="line") # I will use this
ggplot(data.frame(x,y), aes(x,y)) + geom_line() # verbose

d <- data.frame(x, y)

qplot(x, y, data=d, geom="line") 
ggplot(d, aes(x,y)) + geom_line() # I will use this

Obviamente, plotagens mais complexas requerem ggplot () e geralmente armazeno dados em data.frame, portanto, em minha experiência, raramente uso qplot.

E parece bom usar sempre ggplot (). Enquanto o qplot economiza digitação, você perde muitas funcionalidades.

kohske
fonte
2
Aceito, mesmo que todas as respostas sejam úteis, obrigado a todos!
juba,
Ótima pergunta e uma resposta excelente.
d8aninja
resposta excelente, de fato, obrigado
Homam Bahrani
17

Eu sou novo no R, mas acabei de pensar em compartilhar isso.

 a <- c(1,2,3)

 b <- c(2,3,4)

 x <- qplot(a,b)

 y <- ggplot(data.frame(a,b), aes(a,b)) +geom_line()

Se eu alterar o valor das variáveis ​​aeb e, em seguida, plotar x, ele levará em consideração os valores alterados, o que não aconteceria com y. Portanto, durante o script, seria bom usar ggplot como se você usasse qplot, todos os gráficos serão iguais às últimas referências fornecidas para qplot.

anishek
fonte
11

Acho que depende de quantas vezes e com que propósito você pretende usar o ggplot2.

Eu uso o ggplot2 principalmente para gráficos em publicações. Isso significa que tendo a precisar de recursos mais avançados, nunca me preocupei em aprender sobre eles qplot. Além disso, como tenho cerca de quatro publicações por ano, não estou usando ggplot2 o suficiente para ficar realmente confortável com a sintaxe e, portanto, me concentrar em um único aspecto parece ideal.

No entanto, se você obtiver novos conjuntos de dados a cada semana, provavelmente estará interessado em explorar rapidamente os conjuntos de dados e produzir gráficos de boa qualidade. Neste caso, aprenda ambos. Você terá bastante prática com a sintaxe e (eventualmente) economizará tempo com ela qplot.

csgillespie
fonte
8

Juba, descobri que se pode usar o qplot para a maioria das necessidades básicas de plotagem. É suficientemente simples, e os padrões bastante razoáveis, para que meus alunos de graduação usem-no exclusivamente e possam produzir tramas excelentes com experiência limitada. E o gráfico criado por qplot [p <- qplot (etc)] pode ser modificado por qualquer um dos comandos completos do ggplot2, o que é útil (eles são armazenados da mesma forma, não importa como foram criados). Então, pessoalmente, eu uso o qplot para quase tudo, e salvo o ggplot para dentro das funções.

Bryan Hanson
fonte
5
  • qplot é a escolha mais simples se você estiver lidando com vetores de entrada
  • ggplot requer um data.frame como estrutura de dados de entrada.

Quando você deseja produzir um histograma, o qplot precisa apenas do vetor de ocorrências

#rnorm 
x <- rnorm(10)

#ggplot2 package: qplot
qplot(x, geom="histogram")

#ggplot2: using straight ggplot (requires conversion to data.frame)
ggplot(data.frame(x), aes(x)) + geom_histogram()
Natbusa
fonte
3

Mais uma variante minha: eu uso qplotquando estou digitando diretamente no console e ggplotquando estou escrevendo scripts. Mas depois de descobrir repetidas vezes que quero recriar um enredo que digitei no console 15 minutos antes, escrevo quase todos eles em um script agora - então uso ggplot quase todo o tempo.

(Interessante ver a diversidade de respostas!)

Matt Parker
fonte