Выбор между qplot () и ggplot () в ggplot2 [закрыто]


98

Я начинаю использовать отличный ggplot2пакет для построения графиков в R, и одна из первых вещей, которые я задаю себе перед каждым графиком, это «хорошо, я буду использовать qplotили ggplot

Я понимаю, что это qplotобеспечивает более простой синтаксис, но ggplotобеспечивает максимальную функциональность и гибкость, но какую функцию вы используете чаще всего, и есть ли у вас конкретные варианты использования для каждой из них? Используете ли вы в основном qplotи ggplotтолько для сложных сюжетов или ggplotвсегда?

Спасибо за ваш отзыв !

Ответы:


81

Как по мне, если доступны и qplot, и ggplot, критерий зависит от того, хранятся ли данные в data.frame или в отдельных переменных.

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

Конечно, для более сложных графиков требуется ggplot (), и я обычно храню данные в data.frame, поэтому, по моему опыту, я редко использую qplot.

И неплохо всегда использовать ggplot (). Хотя qplot экономит набор текста, вы теряете много функций.


2
Принимаю, даже если каждый ответ полезен, всем спасибо!
juba

Отличный вопрос и отличный ответ.
d8aninja

превосходный ответ, действительно спасибо
Homam Bahrani

17

Я новичок в R, но просто подумал поделиться этим.

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

Если я изменю значение переменных a и b, а затем построю график x, он будет учитывать измененные значения, тогда как y - нет. Поэтому при написании сценариев было бы хорошо использовать ggplot, как если бы вы использовали qplot, все графики будут равны последним предоставленным ссылкам на qplot.


11

Я думаю, это зависит от того, как часто и с какой целью вы собираетесь использовать ggplot2.

В основном я использую ggplot2 для графики в публикациях. Это означает, что мне нужны более продвинутые функции, поэтому я никогда не удосужился узнать о них qplot. Кроме того, поскольку у меня есть около четырех публикаций в год, я не использую ggplot2 в достаточной степени, чтобы чувствовать себя комфортно с синтаксисом, и поэтому сосредоточение внимания на одном аспекте кажется оптимальным.

Однако, если вы получаете новые наборы данных каждую неделю, вы, вероятно, заинтересованы в быстром изучении наборов данных и построении графика хорошего качества. В этом случае изучите оба. Вы получите достаточно практики с синтаксисом и (в конечном итоге) сэкономите время с qplot.


8

Джуба, я обнаружил, что qplot можно использовать для большинства основных задач построения графиков. Это достаточно просто, а настройки по умолчанию вполне разумны, так что мои студенты используют его исключительно, и они могут создавать отличные графики с ограниченным опытом. И график, созданный qplot [p <- qplot (etc)], может быть изменен любой из полных команд, предоставляемых ggplot2, что удобно (все они хранятся одинаково, независимо от того, как они были созданы). Так что лично я использую qplot почти для всего и сохраняю ggplot для внутренних функций.


5
  • qplot - самый простой выбор, если вы имеете дело с входными векторами
  • ggplot требует data.frame в качестве структуры входных данных.

Когда вы хотите создать гистограмму, qplot нужен только вектор вхождений

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

3

Еще один вариант от меня: использую, qplotкогда печатаю прямо в консоли, и ggplotкогда пишу скрипты. Но после того, как я снова и снова обнаружил, что хочу воссоздать график, который я ввел в консоль 15 минут назад, я теперь записываю почти все их в сценарий, поэтому я использую ggplot почти все время.

(Интересно увидеть разнообразие ответов!)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.