Bir R dağılım grafiğindeki noktaların boyutunu kontrol ediyor musunuz?


117

R'de plot()fonksiyon pch, arsadaki noktaların görünümünü kontrol eden bir argüman alır . On binlerce noktaya sahip dağılım grafikleri yapıyorum ve küçük ama çok küçük olmayan bir noktayı tercih ediyorum. Temel olarak, pch='.'çok küçük, ama pch=19çok şişman buluyorum . Ortada bir şey var mı yoksa noktaları bir şekilde küçültmenin bir yolu var mı?


Noktaları küçültmek yerine, 100 rastgele veri noktasını görmenin 1000'den daha kolay olacağını söylemenin bir yolu var mı?
user2363642

Birçok küçük nokta için, alfa (şeffaflık) kullanmak bir dağılım grafiğini, onu çizmek için daha az nokta kullanmaktan çok daha bilgilendirici hale getirebilir.

1
Kullanmamayı öneririm pch='.', merkezin dışında olacak. Kaynak: Eskiden pch='.'sık kullanıyordum
geneorama

@geneorama Bunun ·yerine kullanmayı mı kastediyorsunuz .?
nanaki

@nanaki az ya da çok, ama tuhaf bir şekilde sembolünüz onu R'de kullandığımda küçük kutular olarak görünüyor. Aşağıdaki cevaplar doğru yaklaşımı açıklamada iyi bir iş çıkarıyor.
geneorama

Yanıtlar:


101

cexArgümanı deneyin :

?par

  • cex
    Varsayılana göre büyütülmesi gereken metin ve sembollerin miktarını veren sayısal bir değer. Plot.default gibi bazı grafik fonksiyonlarının bu grafiksel parametreyi çarpan bu isimde bir argümanı olduğunu ve noktalar gibi bazı fonksiyonların geri dönüştürülen bir değer vektörünü kabul ettiğini unutmayın. Birden büyük uzunlukta bir vektör sağlanırsa, diğer kullanımlar yalnızca ilk değeri alır.

15
Başka seçeneğim olmadıkça sembol boyutunu kontrol etmek için 'cex' kullanacağımı sanmıyorum. Sadece bazen işe yarıyor; kural, 'cex' 'par' ile ayarlandığında, arsa üzerindeki (çoğu) metnin boyutunu etkiler, 'plot' içinde ayarlandığında 'cex' yalnızca sembol boyutunu etkiler. Dolayısıyla, bu kuralı yanlış uygularsanız, yalnızca sembol boyutunuz değişmez, aynı zamanda metin boyutunu etkileyen birden çok parametreniz olur (cex.axis, cex.lab, cex.main ve cex.sub - hepsi aynı şeyi yapar 'cex' olarak iş, yalnızca parça başına). Böyle bir kodun bakımı ve genişletilmesi zordur.
doug

5
Katılıyorum. cexKüresel olarak ayarlamak par, şekil kenar boşlukları dahil, düzeltmeniz gereken her türlü şeyi değiştirir. Ancak cexiçindeki ayar plotişe yarıyor gibi görünüyor.
uçan

Yukarıda doug'un yorumuyla benimsenen tavsiye, ille de yanlış değildir, ancak taslak oluştururken cexargümanın kullanılmasıyla ilgili herhangi bir potansiyel sorunu önemli ölçüde abartır . Hem kullanışlı hem de en iyi seçenek olduğu pek çok örnek vardır.
joran

lwdpch'in çizgi genişliğini kontrol eder, örn plot(1:5, pch=1:5, col=1:5, lwd=1:5). Teşekkürler sthda.com/english/wiki/…
geneorama

95

pch = 20 , "." arasında boyutlandırılmış bir sembol döndürür . ve 19.

Bu dolu bir semboldür (muhtemelen istediğiniz şey budur).

Bunun yanı sıra, R'deki temel grafik sistemi bile kullanıcının sembol boyutu, rengi ve şekli üzerinde hassas bir kontrole izin verir. Örneğin,

dfx = data.frame(ev1=1:10, ev2=sample(10:99, 10), ev3=10:1)

with(dfx, symbols(x=ev1, y=ev2, circles=ev3, inches=1/3,
                  ann=F, bg="steelblue2", fg=NULL))

Grafik örneği


Bu arsayı seviyorum, ancak yarıçapın o noktadaki gözlem sayısına eşit olmasını istiyorum, bunu nasıl yapacağımı bana gösterebilir misin?
Derk Arts

pi*R^2(yüzey) gözlemlerin sayısı ile orantılı olmalıdır.
SESman

5
@saratis Bu istediğini yapacak:symbols(x=dfx$ev1, y=dfx$ev2, circles=sqrt(dfx$ev3/pi), inches=1/3, ann=F, bg="steelblue2", fg=NULL)
fmark

1
Aynı grafik üzerinde birden fazla seriyi çizmek için bunu nasıl kullanabileceğime dair bir fikriniz var mı? yani "puan (x = dfx2 $ ev1, y = dfx2 $ ev2, daireler = dfx2 $ ev3, ...)" çalışmıyor.
Neodyme

Merak ediyorsanız "inç nedir?" buraya bakın
MichaelChirico

22

Gibi rcs belirtildiği, cexbaz grafik paketinde iş yapacak. Sana da grafiği yapmaya istekli değilsiniz herhalde ggplot2ancak bunu yaparsanız, bir var sizekolayca (kontrol edebilirsiniz, estetik niteliği ggplot2kullanımı kolay bir işlev bağımsız değişkeni vardır: yazmak yerine cex(karakter genişleme), içinde ggplot2yazdığınız gibi olabilir size = 2ve 2mm puan alacaksınız).

İşte örnek:

### base graphics ###
plot(mpg ~ hp, data = mtcars, pch = 16, cex = .9)

### ggplot2 ###
# with qplot()
qplot(mpg, hp, data = mtcars, size = I(2))
# or with ggplot() + geom_point()
ggplot(mtcars, aes(mpg, hp), size = 2) + geom_point()
# or another solution:
ggplot(mtcars, aes(mpg, hp)) + geom_point(size = 2)

4
Ve eğer gerçekten on binlerce nokta çiziyorsanız, ggplot2'nin güzel görünmesi için birkaç alternatif yolu vardır - alfa ayarlamaları, onaltılık kutular, kontur grafikleri vb. Varsa, ggplot2 kitabının 72-77. Sayfalarına bakın. kütüphanenizde veya kütüphanenizin Springer kitaplarına elektronik erişimi varsa (R kitaplarının çoğunun orada olduğunu düşünüyorum).
Matt Parker

Evet ... alphaAşırı çizmeyi önlemek için özellikle dağılım grafiğinde kullanıyorum.
aL3xa

@ aL3xa Temel grafik paketinde alpha kullanabilirsiniz . Örneğin col = rgb(0, 0, 0, 0.6)arsa seçeneklerine ekleyin .
RobJan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.