Her iki veri kümesini de gösterecek şekilde, alfa kanalları olan iki ggplot2
çizimini bindirmek istiyorum. Bu benim test verileridir:Alfa kanalları ile iki ggplot2 stat_density2d yerleşimlerini katlayın
data = read.table(text="P1 -1 0 4\nP2 0 0 2\nP3 2 1 8\nP4 -2 -2 6\nP5 0.5 2 12")
data2 = read.table(text="Q1 1 1 3\nQ2 1 -1 2\nQ3 -1 1 8")
colnames(data) = c("name","x","y","score")
colnames(data2) = c("name","x","y","score")
Ve burada bu verileri çizmek nasıl:
ggplot(data, aes(x=x,y=y)) +
stat_density2d(data=data,geom="tile", aes(fill = ..density..,alpha=..density..), contour=FALSE) +
theme(legend.position="none") + scale_fill_gradient (low = "#FFFFFF", high = "#FF0000") +
xlim(-3,3) + ylim(-3,3) +
geom_point()
ggplot(data2, aes(x=x,y=y)) +
stat_density2d(data=data2,geom="tile", aes(fill = ..density..,alpha=..density..), contour=FALSE) +
theme(legend.position="none") +
scale_fill_gradient (low = "#FFFFFF", high = "#00FF00") +
xlim(-3,3) + ylim(-3,3) +
geom_point()
ilk arsa verileri gösterir, ikinci arsa verilerine2:
Şimdi her iki grafiğin de bir birleşimini istiyorum. Aşağıdaki görüntü almak istediğim şey. Her iki görüntüyü katman olarak çarparak masaüstündeki görüntü düzenleme programımla ürettim.
ben üst üste bir veri setini çizdirmek çalıştı, ancak bu iki katmanı çarpma etmez ve ikinci renk ilkini üzerine yazar.
ggplot(data, aes(x=x,y=y)) +
stat_density2d(data=data,geom="tile", aes(fill = ..density..,alpha=..density..), contour=FALSE) +
theme(legend.position="none") + scale_fill_gradient (low = "#FFFFFF", high = "#FF0000") +
xlim(-3,3) + ylim(-3,3) +
stat_density2d(data=data2,geom="tile", aes(fill = ..density..,alpha=..density..), contour=FALSE) +
scale_fill_gradient (low = "#FFFFFF", high = "#00FF00")
Ayrıca ben bu uyarıyı alıyorum: 'dolgu' için
Ölçek zaten mevcuttur. Mevcut ölçeğin yerini alacak olan 'dolgu' için başka bir ölçek eklemek.
Bunu R'de yapmanın bir yolu var mı? Ya da bunu veya benzer bir sonucu elde etmek için başka bir yol var mı (örn. SmoothScatter gibi diğer işlevleri kullanarak)? Geçici çözüm bir tür olarak ben sunucuda ImageMagick kullanarak benzer bir sonuç elde edeceğiz düşünüyorum, ama iki katmandan çarpma 1
Güncelle
R.
içinde her şeyi tercih ederim ImageMagick'te bu şekilde yapılır;composite -compose multiply data-red.png data-green.png im-multiply.png
Bu, yukarıda gösterildiği gibi aynı sonucu verir.
Güncelleme 2
@Roland aynı arsa içinde iki veri setlerini çizmek nasıl onun cevabını öğretti. Bu harika olsa da, bir problem kalır: Görüntü, verileri arsaya beslediğiniz sıraya göre değişir.
ggplot(rbind(data.frame(data, group="a"), data.frame(data2, group="b")), aes(x=x,y=y)) +
stat_density2d(geom="tile", aes(fill = group, alpha=..density..), contour=FALSE) +
scale_fill_manual(values=c("a"="#FF0000", "b"="#00FF00")) +
geom_point() +
theme_minimal() +
xlim(-3.3, 3.3) + ylim(-3.3, 3.3) +
coord_cartesian(xlim = c(-3.2, 3.2), ylim = c(-3.2, 3.2))
bu sonucu verir: hem veri setleri sırasını takas (şimdi veri kümesi "b", aka veri2 gelir, sonra veri kümesi veri aka "a") benzer bir sonuç elde edersiniz, ama şimdi kırmızı renk hakimdir, çünkü daha sonra çizilir ve böylece yeşil verilerin üzerine yazılır.
ggplot(rbind(data.frame(data2, group="a"), data.frame(data, group="b")), aes(x=x,y=y)) +
stat_density2d(geom="tile", aes(fill = group, alpha=..density..), contour=FALSE) +
scale_fill_manual(values=c("b"="#FF0000", "a"="#00FF00")) +
geom_point() + theme_minimal() +
xlim(-3.3, 3.3) + ylim(-3.3, 3.3) +
coord_cartesian(xlim = c(-3.2, 3.2), ylim = c(-3.2, 3.2))
Ben veri setleri sırasına bağlı değildir bir çözüm gerekir.
Ne yazık ki: [ "anda parsel başına (x ve y, her şeyi önceden) Sadece bir ölçek olabilir"] (http://stackoverflow.com/a/3809071/1457051) . Ve, bu Hadley'den bu yana, muhtemelen iki parsel üretme ve ImageMagick ile dönüştürme ile sıkışmış bulunuyorsunuz. – hrbrmstr
Bu bildirime beni işaretlediğiniz için teşekkür ederim. Sonra ImageMagick yoluna gideceğim. – z80crew
Nihai rengi etkileyen yığının sırasını yeniden yazdığınızda, bu konuyla ilgili şu iplikler de var: http://www.mail-archive.com/[email protected]/msg84014.html En iyi çözüm Yığının renklerini kendiniz hesaplayın ve bunları çizin - ggplot2'de olmasa da bir örnek: http://stackoverflow.com/questions/13867782/superimpose-red-green-images-in-r-using-image-or -rasterimage –