Я хочу трохи розгорнути відповідь Діанна Кука. За її словами, ggplot2 призначений для створення статичних сюжетів, ggvis - для інтерактивних сюжетів. Для цього є маса наслідків:
Тип файлу Вихід ggvis - це HTML, включаючи CSS та файли javascript. ggvis, природно, не виводить звичайні файли зображень. ggplot2 виводить звичайні зображення, які потім можуть бути вбудовані в HTML або pdf, gif або по електронній пошті чи будь-що інше. ggvis, якщо ви хочете відправити файл електронною поштою, ви збираєте каталог HTML-файлів для перегляду в браузері.
Анімація Наслідком цього є те, що якщо ви хочете створити анімацію, ви можете зробити кадри в ggplot2 і об'єднати їх, але немає природного способу зробити це з ggvis. ggvis, що діє в інтерактивному режимі, буде оживляти "наживо", але це різні види анімації. Якщо на кадрі відбувається більше, ніж може обробити ggvis, ви не можете обійти це (принаймні природним чином), генеруючи зображення та роблячи фільм на задньому плані. Так само користувач не може завантажити фільм або файл gif з ggvis для відтворення.
Зараз у моєму поточному проекті я перейшов з ggplot2 на ggvis, оскільки ggplot2 був надто повільним для інтерактивної анімації. Але я також хотів би, щоб користувач, погравши з налаштуваннями, мав змогу натиснути «піти» та завантажити повноефірний, гладкий анімаційний фільм про те, що вони зробили. Я не зрозумів, як це зробити за допомогою ggvis, але це було б торт за допомогою ggplot2.
Швидкість ggvis значно, набагато швидше, ніж ggplot2, особливо при зміні даних. Кожен графік ggplot2 має затримку на секунду або кілька. ggvis має секунду або близько того, коли ви вперше створюєте сюжет, після цього зміна даних відбувається безперебійно - ggvis може бути "реактивно" пов'язаний з даними, щоб він оновлювався, коли дані змінюються. З ggplot2 весь сюжет збирається переробити.
Стиль та зовнішній вигляд сюжети ggplot2 здаються на перший погляд трохи приємнішими, ніж сюжети ggvis. Сюжети ggplot2 досить елегантні. Сюжети ggvis простіші, але вони ростуть на мене. Існують також розширення для ggplot2, такі як пакети xkcd та wesanderson, де немає аналога для ggvis. Сюжети ggplot2 виглядають так, ніби їх зробив той самий чоловік (автор ggplot2), і через деякий час вони втомлюються.
Повнота У ggplot2 можна створити типи сюжетів, які ggvis не підтримує, принаймні поки що. Наприклад, у ggvis немає сюжетного елемента "килим". Я бачив один-два хороплети, виготовлені з ggvis, але природної вбудованої підтримки поки немає. ggplot2 має полярні координати (тобто кругові діаграми), ggvis - ні. Також відсутні в ggvis (і доступні або в ggplot2, або в розширенні ggplot2): boxplots; контурні ділянки; природні теплові карти; природні кореляційні діаграми; крапкові точки; сюжетні скрипки; мережеві сюжети; дендрограми. Звичайно, я впевнений, що дуже розумні люди можуть створити все це в ggvis, але я не такий розумний.
Анотації ggplot2 мають дуже хороший, можливо, недостатньо використаний рамки для анотацій. ggvis ні.
Subplots & Facets ggplot2 має дуже приємну, але, можливо, досить обмежену функцію "облицювання". Ви також можете комбінувати кілька сюжетів ggplot2, використовуючи пакет сітки. На даний момент ви не можете робити ні з ggvis. Діаграми ggvis не можуть бути об'єднані в одне зображення (оскільки це не зображення, це "живі" веб-сторінки), і він не підтримує жодної форми граніту або субплотирования. Це, як передбачається, буде в трубопроводі.
Візуальна гнучкість ggplot2 хоче, щоб кожен сюжет виглядав однаково, що означає, що автор вважає за краще стилістично. Наприклад, у ggplot2, наприклад, не можна мати ділянки з кількома осями y. ggvis може. ggvis набагато гнучкіший, ніж ggplot2. Набагато простіше робити такі речі, як приховування легенд, поєднувати кілька легенд в одне, використовувати різні масштаби для різних речей на одному сюжеті тощо.
Глибока налаштованість Якщо ви хочете створити, скажімо, нову розумну шкалу, це не надто важко зробити в ggplot2 (хоча це досить заплутано). Здається, просто не існує способу зробити багато чого в ggvis. Можливо, його просто ще немає.
Часовий ряд ggplot2 не любить будувати часові ряди. Це може , але цього не хоче . Насправді жоден з них не хоче; обидва наполягають на тому, щоб дані передавались у data.frame, і вони не можуть обробляти xts або зоопарки. Вони також не мають вбудованих функцій для нарізки часових рядів. Але ggvis не може протистояти тимчасовому ряду так сильно, як ggplot2. Це частково тому, що його так швидко оновлювати дані у графічній графіці ggvis. Якщо ви хочете скласти таймсері, вам доведеться перемогти або в поданні, але ggvis набагато менш пасивно-агресивний щодо цього.
Чи є вони однаковим синтаксисом? Сорт ... Між ними багато спільного, і навчитися мислити в стилі одного допоможе адаптуватися до стилю іншого. Зокрема, обидва розроблені таким чином, що всі графічні виклики з'єднуються один з одним у одному рядку коду. Основна перевага цього полягає в тому, що робить налагодження та профілювання дуже важким, а в основному робить функції налагодження / профілювання такими, як Rstudio, марними. Крім цього, вони синтаксично зовсім інші. Деякі речі, складні в ggplot2, легко є в ggvis. Деякі речі, які легко в ggplot2, неможливо в ggvis. І навпаки. (Я трохи надаю перевагу тому, як ggvis робить речі, які мені легше зрозуміти.)
Помилок ggvis все ще досить багато. Іноді вона поводиться просто дивно. Однак іноді сюжети випадковим чином зникають з причин, які займають години для обійстя і мають дуже мало сенсу. Розробники визнають це вільно, ggvis ще не готовий до виробництва. Якщо ви маєте справу з якими - або складнощами, ви будете виявити , що вони не жартують.
Підсумок: Навчання проміжним складанням у кожному займає близько 16 годин. Отже, реально, ви, мабуть, навчитесь обом.