Tôi muốn mở rộng một chút về câu trả lời của Dianne Cook. Như cô ấy đã nói, ggplot2 là để tạo ra các ô tĩnh, ggvis dành cho các ô tương tác. Có một loạt các hàm ý về điều đó:
Loại tệp ggvis đầu ra là HTML bao gồm các tệp CSS và javascript. ggvis không tự nhiên xuất các tập tin hình ảnh thông thường. ggplot2 xuất ra các hình ảnh thông thường, sau đó có thể được nhúng trong HTML hoặc pdf hoặc gif hoặc e-mail, hoặc bất cứ thứ gì khác. ggvis, nếu bạn muốn gửi e-mail tệp, bạn đang tải lên một thư mục các tệp HTML sẽ được xem trong trình duyệt.
Hoạt hình Hậu quả của điều đó là nếu bạn muốn tạo một hình ảnh động, bạn có thể tạo các khung hình trong ggplot2 và hợp nhất chúng, nhưng không có cách nào tự nhiên để làm điều này với ggvis. ggvis hành động tương tác sẽ làm sinh động "sống", nhưng đây là những loại hoạt hình khác nhau. Nếu có nhiều diễn biến trên mỗi khung hình hơn ggvis có thể xử lý, bạn không thể giải quyết vấn đề đó (ít nhất là theo cách tự nhiên) bằng cách tạo hình ảnh và làm phim ở chế độ nền. Tương tự, người dùng không thể tải xuống tệp phim hoặc tệp gif từ ggvis để phát lại.
Ngay bây giờ trong dự án hiện tại của tôi, tôi đã chuyển từ ggplot2 sang ggvis vì ggplot2 quá chậm để hoạt hình tương tác. Nhưng, tôi cũng muốn người dùng, sau khi chơi với các cài đặt, để có thể nhấp vào "đi" và tải xuống một bộ phim hoạt hình mượt mà, tốc độ đầy đủ về những gì họ đã làm. Tôi đã không tìm ra cách để làm điều này bằng cách sử dụng ggvis, nhưng nó sẽ là bánh bằng cách sử dụng ggplot2.
Tốc độ ggvis là rất nhiều, rất nhiều, nhanh hơn nhiều so với ggplot2, đặc biệt là khi thay đổi dữ liệu. Mỗi lô ggplot2 có một giây hoặc một vài độ trễ. ggvis có lần thứ hai hoặc lâu hơn khi bạn lần đầu tiên tạo cốt truyện, sau đó việc thay đổi dữ liệu là liền mạch - ggvis có thể được "phản ứng" liên kết với dữ liệu để nó tự cập nhật mỗi khi dữ liệu thay đổi. Với ggplot2, toàn bộ cốt truyện sẽ được vẽ lại.
Phong cách & Ngoại hình lô ggplot2 có vẻ đẹp hơn một chút, thoạt nhìn, hơn so với lô ggvis. lô ggplot2 khá thanh lịch. cốt truyện ggvis đơn giản hơn, nhưng chúng đang phát triển trên tôi. Ngoài ra còn có các phần mở rộng cho ggplot2, chẳng hạn như các gói xkcd và wesanderson, trong đó không có tương tự cho ggvis. Tất cả các lô ggplot2 trông giống như chúng được tạo ra bởi cùng một người (tác giả của ggplot2) và sau đó một thời gian sẽ mệt mỏi.
Tính đầy đủ Có các loại cốt truyện bạn có thể tạo trong ggplot2 mà ggvis không hỗ trợ, ít nhất là cho đến nay. Ví dụ, không có yếu tố cốt truyện "tấm thảm" trong ggvis. Tôi đã thấy một hoặc hai hợp xướng được tạo ra bằng ggvis, nhưng vẫn chưa có hỗ trợ tích hợp tự nhiên nào. ggplot2 có tọa độ cực (tức là biểu đồ hình tròn), ggvis thì không. Cũng bị thiếu từ ggvis (và có sẵn trong ggplot2 hoặc trong phần mở rộng ggplot2): boxplots; đường viền; bản đồ nhiệt tự nhiên; biểu đồ tương quan tự nhiên; dấu chấm; âm mưu vĩ cầm; lô mạng; dendrograms. Tất nhiên tôi chắc chắn rằng một số người rất thông minh có thể tạo ra tất cả những thứ này trong ggvis, nhưng tôi không thông minh đến thế.
Chú thích ggplot2 có một khung chú thích rất đẹp, có lẽ chưa được tận dụng. ggvis không.
Subplots & Facets ggplot2 có một tính năng "faceting" rất đẹp, nhưng có lẽ khá hạn chế. Bạn cũng có thể kết hợp nhiều lô ggplot2 bằng gói lưới. Đến bây giờ, bạn không thể làm gì với ggvis. Các lô ggvis không thể được kết hợp thành một hình ảnh duy nhất (vì chúng không phải là hình ảnh, chúng là các trang web "trực tiếp") và nó không hỗ trợ bất kỳ loại khía cạnh hoặc phân vùng nào. Điều này được cho là trong đường ống dẫn.
Visual Flexility ggplot2 muốn mọi cốt truyện đều giống nhau, điều đó có nghĩa là tác giả thích phong cách hơn. Chẳng hạn, không có cách nào để có một cốt truyện có nhiều trục y trong ggplot2. ggvis có thể. ggvis linh hoạt hơn rất nhiều so với ggplot2. Nó dễ dàng hơn nhiều để làm những việc như ẩn truyền thuyết, kết hợp nhiều huyền thoại thành một, sử dụng các quy mô khác nhau cho những thứ khác nhau trên cùng một cốt truyện, v.v.
Khả năng tùy biến sâu Nếu bạn muốn tạo, giả sử, một thang đo thông minh mới, không quá khó để làm điều đó trong ggplot2 (mặc dù nó khá khó hiểu). Dường như không có cách nào để làm nhiều điều đó trong ggvis. Có lẽ nó chỉ chưa được.
Chuỗi thời gian ggplot2 không thích vẽ chuỗi thời gian. Nó có thể , nhưng nó không muốn . Thật ra không ai trong số họ muốn; cả hai đều khăng khăng đòi được cung cấp dữ liệu trong data.frame và họ không thể xử lý các đối tượng xts hoặc sở thú. Họ cũng không có các tính năng tích hợp để cắt một chuỗi thời gian. Nhưng ggvis không chiến đấu chống lại chuỗi thời gian khó như ggplot2. Đó là một phần bởi vì nó quá nhanh để cập nhật dữ liệu trong một âm mưu ggvis, tôi cho rằng. Nếu bạn muốn vẽ một khoảng thời gian bạn sẽ phải đánh bại hoặc phải nộp bài, nhưng ggvis sẽ ít thụ động hơn rất nhiều về nó.
Có phải họ cùng một cú pháp? Sắp xếp ... Có rất nhiều điểm chung giữa họ, và học cách suy nghĩ theo phong cách của một người sẽ giúp thích nghi với phong cách của người kia. Đặc biệt, cả hai đều được thiết kế để tất cả các cuộc gọi âm mưu được nối với nhau trên một dòng mã. Ưu điểm chính của việc này là làm cho việc gỡ lỗi và định hình thực sự khó khăn, và về cơ bản làm cho các tính năng gỡ lỗi / lược tả trong những thứ như Rstudio trở nên vô dụng. Ngoài ra, chúng hoàn toàn khác nhau. Một số điều khó trong ggplot2 là dễ dàng trong ggvis. Một số điều dễ dàng trong ggplot2 là không thể trong ggvis. Và ngược lại. (Tôi có một chút ưu tiên cho cách ggvis làm mọi việc, điều mà tôi thấy dễ hiểu hơn.)
Lỗi ggvis vẫn còn khá nhiều. Đôi khi nó cư xử thật kỳ quặc. Tuy nhiên, đôi khi, các âm mưu biến mất ngẫu nhiên vì những lý do mất hàng giờ để xử lý và rất ít ý nghĩa. Các nhà phát triển thừa nhận điều này một cách tự do, ggvis chưa sẵn sàng sản xuất. Nếu bạn đối phó với bất kỳ sự phức tạp nào, bạn sẽ phát hiện ra họ không đùa.
Điểm mấu chốt: Học âm mưu trung gian trong mỗi mất khoảng 16 giờ. Vì vậy, thực tế, có lẽ bạn sẽ học cả hai.