Dianne Cook'un cevabını biraz genişletmek istiyorum. Dediği gibi, ggplot2 statik araziler oluşturmak içindir, ggvis etkileşimli araziler içindir. Bunun bir takım etkileri var:
Dosya Türü ggvis çıkışı, CSS ve javascript dosyalarını içeren HTML'dir. ggvis doğal olarak sıradan görüntü dosyalarını vermez. ggplot2, daha sonra HTML veya pdf veya gif olarak veya e-posta ile gönderilebilen veya başka herhangi bir yere gömülebilen sıradan görüntüler üretir. ggvis, dosyayı e-posta ile göndermek istiyorsanız, bir tarayıcıda görüntülenecek bir HTML dosyaları dizini sıkıştırıyorsunuz.
Animasyon Bunun bir sonucu, eğer bir animasyon oluşturmak istiyorsanız, kareleri ggplot2'de yapabilir ve birleştirebilirsiniz, ancak bunu ggvis ile yapmanın doğal bir yolu yoktur. Etkileşimli olarak hareket eden ggvis “canlı” yı canlandırır, ancak bunlar farklı tür animasyonlardır. Eğer ggvis'in işleyebileceğinden daha fazla kare başına devam ederse, görüntüleri oluşturarak ve filmi arka planda yaparak bununla (en azından doğal bir şekilde) çalışamazsınız. Benzer şekilde, kullanıcı ggvis'ten oynatmak için bir film veya gif dosyası indiremez.
Şu anki projemde ggplot2'den ggvis'e geçtim çünkü ggplot2 etkileşimli animasyon yapmak için çok yavaştı. Ancak, ayarları değiştirdikten sonra, kullanıcının "git" düğmesini tıklayıp, yaptıklarını tam hızlı, pürüzsüz bir animasyon filmi indirmesini de istiyorum. Bunu ggvis kullanarak nasıl yapacağımı çözemedim, ama ggplot2 kullanarak kek olacaktı.
hız ggvis, özellikle veri değiştirirken, ggplot2'den çok, çok, çok daha hızlıdır. Her ggplot2 arsa bir saniye veya birkaç gecikme vardır. ggvis'in arsa oluşturduğunuzda, verinin değiştirilmesinin ardından sorunsuz olan bir saniye vardır - ggvis verilere "reaktif olarak" bağlanabilir, böylece veriler değiştiğinde kendini günceller. Ggplot2 ile tüm komplo yeniden çizilecek.
Stil ve görünüm ggplot2 grafikleri, ilk bakışta ggvis grafiğinden biraz daha hoş görünüyor. ggplot2 parselleri oldukça zarif. Ggvis grafikleri daha basittir, ama üzerimde büyüyorlar. Ayrıca, ggvis için analogun olmadığı xkcd ve wesanderson paketleri gibi ggplot2 uzantıları da vardır. ggplot2 grafikleri, aynı kişi (ggplot2'nin yazarı) tarafından yapılmış ve bir süre sonra yorulmaya benziyor.
Tamlık ggplot2'de ggvis'in desteklemediği, en azından şu ana kadar desteklemediğiniz arsa türleri vardır. Örneğin ggvis'te "halı" arsa elemanı yoktur. Gvis ile yapılan bir veya iki choroplet gördüm, ancak henüz doğal bir destek yok. ggplot2 kutupsal koordinatlara (yani pasta grafiklerine) sahiptir, ggvis yoktur. Ayrıca ggvisten de eksik (ve ya ggplot2'de ya da bir ggplot2 uzantısında bulunabilir): boxplots; kontur çizimleri; doğal ısı haritaları; doğal korelasyon çizelgeleri; dotplots; keman grafikleri; ağ arazileri; dendrogramlar. Tabii ki çok zeki insanlar bunları ggvis'te yaratabilirler ama ben o kadar da akıllıca değilim.
Ek açıklamalar ggplot2 çok güzel, belki de az kullanılmış bir ek açıklama çerçevesine sahiptir. Ggvis yapmaz.
Alt Noktalar ve Yönler ggplot2 çok hoş, ama belki de oldukça sınırlı bir "yüzleşme" özelliğine sahiptir. Izgara paketini kullanarak birden fazla ggplot2 grafiğini de birleştirebilirsiniz. Şu an itibariyle, ya ggvis ile yapamazsınız. ggvis çizimleri tek bir görüntüde birleştirilemez (görüntü olmadıkları için, "canlı" web sayfalarıdırlar) ve herhangi bir tür yüzleşme ya da alt çizmeyi desteklemez. Bunun boru hattında olması gerekiyordu.
Görsel Esneklik ggplot2 her çizimin aynı görünmesini istiyor, yani yazarın stilist olarak tercih ettiği gibi. Örneğin, ggplot2'de çoklu y eksenli bir komploya sahip olmanın bir yolu yoktur. ggvis olabilir. ggvis, ggplot2'den çok daha esnektir. Efsaneleri saklamak, birden fazla efsaneyi bir araya getirmek, aynı arsa üzerinde farklı şeyler için farklı ölçekler kullanmak gibi şeyleri yapmak çok daha kolay.
Derin Özelleştirilebilirlik Eğer, diyelim ki, onun değil, yeni akıllı ölçek oluşturmak istiyorsanız çok ggplot2 içinde (oldukça kafa karıştırıcı olsa da) o yapmak zor. Sadece ggvis'te bunu yapmanın bir yolu yok gibi görünüyor. Belki de henüz değil.
Zaman Serileri ggplot2, zaman serilerini çizmeyi sevmez. Bu can , ama gelmez istiyorum . Aslında ikisi de istemiyor; her ikisi de bir data.frame dosyasında veri beslenmekte ısrar eder ve xts veya hayvanat bahçesi nesnelerini idare edemezler. Bir zaman serisini dilimlemek için yerleşik özelliklere de sahip değiller. Ancak ggvis, zaman serisine karşı ggplot2 kadar zor savaşmaz. Bu kısmen, bir ggvis arsadaki verileri güncellemek için çok hızlı olduğu için, sanırım. Bir zaman çizelgesi çizmek istiyorsanız, ikisini de teslim etmek zorunda kalacaksınız, ancak ggvis bu konuda daha pasif-agresif.
Aynı Sözdizimi Var mı? Sırala ... Aralarında ortak olan çok şey var ve birinin tarzında düşünmeyi öğrenmek , diğerinin tarzına uyum sağlamaya yardımcı olacak. Özellikle, her ikisi de tasarlanır, böylece tüm komplo aramaları tek bir kod satırında birbirlerine yönlendirilir. Bunun birincil avantajı, hata ayıklama ve profil oluşturmayı gerçekten zorlaştırması ve temelde Rstudio gibi hata ayıklama / profil oluşturma özelliklerini kullanışsız hale getirmesidir. Bunun dışında, sözdizimsel olarak oldukça farklılar. Ggplot2 içinde zor olan bazı şeyler ggvis'te kolaydır. Ggplot2'de kolay olan bazı şeyler ggvis'te imkansızdır. Ve tam tersi. (Ggvis'in yapması gereken şeyleri tercih etmem biraz daha kolay anlaşılıyor.)
Hatalar hala ggvis epeyce vardır. Bazen sadece garip davranır. Yine de, grafikler, etrafta dolaşması ve çok az mantıklı olması nedeniyle nedenlerle rasgele kayboluyor. Geliştiriciler bunu serbestçe itiraf ediyorlar, ggvis henüz üretime hazır değil. Eğer herhangi bir karmaşıklık ile anlaşma varsa, olur onlar şaka değil keşfetmek.
Bottom Line: Her birinde ara komployu öğrenmek yaklaşık 16 saat sürer. Yani, gerçekçi olarak, muhtemelen ikisini de öğreneceksiniz.