Вибір між 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
Прийнято, навіть якщо кожна відповідь корисна, дякую всім!
Джуба

Чудове запитання та чудова відповідь.
d8aninja

чудова відповідь дійсно дякую
Хомам Бахрані

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 (тощо)], може бути змінений будь-якою з повноцінних команд, які 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.