2011-11-25 14 views
18

Verilerin 2 kategorisi ile dağılım grafiği çizmek istiyorum. biri mavi, ve onlar (veya başka bir kombinasyon) yerleştirdikleri yerde yeşil renkte görünür. Şeffaflık konusunda bile bazı şeylerin daha zor olduğunu gördüm. Grafiğin rengi, bir alanda çizilen son noktanın mavi mi yoksa sarı mı olduğu tarafından etkilenir. Aşağıdaki kod ile Örneğin R'de, bir çizimde 2 renk katmak mümkündür (örneğin, katkısız veya subtraktif renk karıştırma ile)

: enter image description here

: Eğer vektör orders set şekline bağlı

col1 <- rgb(red = .0, green = 0, blue = 0.8, alpha = 0.8) 
col2 <- rgb(red = .8, green = 0.8, blue = 0, alpha = 0.8) 
circle <- data.frame(x = c(0.2,0), 
        y = c(0,0), 
        col = c(col1, col2), 
        stringsAsFactors = F) 
orders <- c(1,2) 
plot(x = circle$x[orders], y = circle$y[orders], 
    col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "") 

(kurar hangi iki büyük noktalar çizilir yuvarlak şekilde) farklı sonuçlar elde

Ve iki daireyi çizdiğiniz sırayı değiştirirseniz, aşağıdakileri yapın: enter image description here

Her iki durumda da yeşil almak için renkleri karıştırmak. Bunu yapmanın bir yolu var mı? Teşekkürler! Düzenle - iki grafik pdf cihazı kullanılarak yapılmıştır. Ayrıca çalışıp çalışmadığını görmek için tikzDevice üzerinden kodu çalıştırmayı denedim ama yapmadı.

+0

paket 'colorspace' bir işlev 'tür karışık renkte değerini hesaplar mixcolor' sahiptir: önceden SO renkler ve alfalar karıştırma kurallarına gönderme yoktur http://cran.r-project.org/web/packages/colorspace/colorspace.pdf. Bunu doğrudan yapmanın bir yolunu bilmiyorum - bu sorunla ilgili çözümlerim, verileri görselleştirmenin farklı bir yolunu bulmak oldu. hexbin ile, 'facets' kullanarak veya her noktada net bir skor hesaplayarak. – Andrie

+2

Bu gerçekten bir cevap değil, ama http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending'e bakabilirsiniz. Farklı cihazların (PDF, tikzDevice, PNG vb.) Tümünü kullandığını farz ediyorum overlaid renkleri belirlemek için bu algoritmadaki varyasyonlar ve neler olduğunu anlamanıza yardımcı olabilir. –

+1

Özellikle, bu formüllerle aldatmaktan biraz daha fazla alfa harmanlamanın değişmez olmadığını anladım (aslında makalenin işaret ettiği gibi, bazı durumlarda da ilişkilendirici değil, çünkü bu burada önemli değil çünkü sadece iki rengi birleştiriyorsunuz) - yukarıdaki "sipariş konuları" nı açıklayan sonuçlar. –

cevap

5

pdf() aygıtının yardım dosyası, arka plan için varsayılan ayarın "saydam" olduğunu söylüyor, ancak uygulamadaki davranışı bu gibi görünmüyor, belki de görüntüleyenlerin beyaz bir arka plan alması veya belki de çizim işlevi "beyaz" dır. Orta kısım ilk, beyaz ve yeşilin eşit bir karışımı olan bir renk haline gelir ve ikinci ikinci sonra maviye eklersiniz. Bu yüzden matematiğin rgb değerini (0.5, 0.5, (0.5 + 0.8)/2) öngördüğünü ve ardından bu karışımın üzerine yerleştirilmiş renk ile karışacağını tahmin ediyorum. Ve bence beyaz + col1 eşit oranlarda eklenir. matematiği değişmez yapan col2 değerleri. Herhangi bir oranda, arka planı "saydam" a zorlayabiliyorsanız sonuç muhtemelen farklı olacaktır. Varsayılan davranış, parlayan tiyatro ışıklarından daha çok boya karıştırma gibidir.

PDF renk modeli http://www.adobe.com/devnet/pdf/pdf_reference.html numaralı belgede açıklanmıştır ve bir pdf aygıtından ne beklediğinizi belirleyecektir (ancak bir görüntüleyicinin sağlayacağı şart değildir).

Beyaz arka plan sorun olduğunu Teorimi test (ve bunu inkar etmiş görünen) katmanlı rgb vektörlere hiçbir katma değer olacağını umuduyla için "siyah" arka planını değiştirerek:

pdf("testfil12rev.pdf", bg="black") 
col1 <- rgb(red = .0, green = 0, blue = 1, alpha = 0.5) 
col2 <- rgb(red = 1, green = 0, blue = 0, alpha = 0.5) 
circle <- data.frame(x = c(0.2,0), 
        y = c(0,0), 
        col = c(col1, col2), 
        stringsAsFactors = F) 
orders <- c(1,2) 
plot(x = circle$x[orders], y = circle$y[orders], bg="black", 
     col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "") 

dev.off() 

'Sipariş' göstergesini tersine çevirmek, aynı arka plan renginde siyah bir arka plan ile sonuçlanmaz.

DÜZENLEME: How to calculate an RGB colour by specifying an alpha blending amount?

+0

ortadaki çamurlu bir yeşil olan saf mavi. Şeffaf ayarlarla denemeyi deneyeceğim. – Andrew

+0

Saydam ayarları denedim ('png (" tmp.png ", bg =" transparent ")') ve bazı şeyleri değiştirir (ve muhtemelen bir faktörü çıkararak herhangi bir keşfe yardımcı olur), ancak sonuçlar yine de değişmezdir ve hala yukarıda belirtildiği gibi saf beklentilere (mavi + sarı = yeşil) uymuyor. –