Wybór między qplot () i ggplot () w ggplot2 [zamknięte]

98

Zaczynam używać świetnego ggplot2pakietu do kreślenia w języku R i jedną z pierwszych rzeczy, o które zadaję sobie pytanie przed każdą fabułą, jest „dobrze, użyję qplotczy ggplot?”

Rozumiem, że qplotzapewnia prostszą składnię, a jednocześnie ggplotzapewnia maksymalne funkcje i elastyczność, ale jakiej funkcji używasz najczęściej i czy masz dla każdego z nich precyzyjne przypadki użycia? Czy używasz głównie qploti ggplottylko do złożonych działek, czy też używaszggplot za każdym razem?

Dziekuję za odpowiedź !

juba
źródło

Odpowiedzi:

81

Jeśli chodzi o mnie, jeśli dostępne są zarówno qplot, jak i ggplot, kryterium zależy od tego, czy dane są przechowywane w data.frame, czy w oddzielnych zmiennych.

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

Oczywiście bardziej złożone wykresy wymagają ggplot (), a dane zazwyczaj przechowuję w data.frame, więc z mojego doświadczenia wynika, że ​​rzadko używam qplot.

I dobrze jest zawsze używać ggplot (). Podczas gdy qplot oszczędza pisanie, tracisz wiele funkcji.

kohske
źródło
2
Zaakceptowano, nawet jeśli każda odpowiedź jest przydatna, dzięki wszystkim!
juba
Świetne pytanie i świetna odpowiedź.
d8aninja
świetna odpowiedź, naprawdę dziękuję
Homam Bahrani
17

Jestem nowy w R, ale właśnie pomyślałem o udostępnieniu tego.

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

Jeśli zmienię wartości zmiennych a i b, a następnie wykreślę x, weźmie pod uwagę zmienione wartości, gdy y nie. Więc podczas pisania skryptów dobrze byłoby używać ggplot tak, jakbyś używał qplot, wszystkie wykresy będą równe najnowszym podanym odniesieniom do qplot.

anishek
źródło
11

Myślę, że zależy to od tego, jak często iw jakim celu zamierzasz używać ggplot2.

Używam ggplot2 głównie do grafiki w publikacjach. Oznacza to, że zwykle potrzebuję bardziej zaawansowanych funkcji, więc nigdy nie zadałem sobie trudu, aby się o nich dowiedziećqplot . Ponadto, ponieważ mam około czterech publikacji rocznie, nie używam ggplot2 na tyle, aby czuć się naprawdę komfortowo ze składnią, więc koncentracja na jednym aspekcie wydaje się optymalna.

Jeśli jednak co tydzień otrzymujesz nowe zestawy danych, prawdopodobnie jesteś zainteresowany szybkim zbadaniem zestawów danych i utworzeniem dobrej jakości wykresu. W takim przypadku naucz się obu. Dostaniesz wystarczająco dużo praktyki ze składnią i (ostatecznie) zaoszczędzisz czas z qplot.

csgillespie
źródło
8

Juba, odkryłem, że qplot można używać do większości podstawowych potrzeb związanych z tworzeniem wykresów. Jest to wystarczająco proste, a wartości domyślne całkiem rozsądne, że moi studenci używają go wyłącznie i mogą tworzyć doskonałe wątki z ograniczonym doświadczeniem. Wykres utworzony przez qplot [p <- qplot (itp.)] Można modyfikować za pomocą dowolnego z pełnych poleceń udostępnianych przez ggplot2, co jest przydatne (wszystkie są przechowywane w ten sam sposób, niezależnie od tego, jak zostały utworzone). Osobiście używam qplot do prawie wszystkiego i zapisuję ggplot dla wnętrza funkcji.

Bryan Hanson
źródło
5
  • qplot to najprostszy wybór, jeśli masz do czynienia z wektorami wejściowymi
  • ggplot wymaga data.frame jako struktury danych wejściowych.

Jeśli chcesz stworzyć histogram, qplot potrzebuje tylko wektora wystąpień

#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
źródło
3

Jeszcze jeden wariant ode mnie: używam, qplotkiedy piszę bezpośrednio w konsoli iggplot kiedy piszę skrypty. Ale po ciągłym stwierdzeniu, że chcę odtworzyć fabułę, którą wpisałem w konsoli 15 minut wcześniej, zapisuję teraz prawie wszystkie z nich w skrypcie - więc prawie cały czas używam ggplot.

(Ciekawe, aby zobaczyć różnorodność odpowiedzi!)

Matt Parker
źródło