Tufte eksenine ulaşmak için R grafiklerindeki kenarlıkları kaldırma


18

Aşağıdaki grafiği düşünün:

x <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100)+100

par(mar=c(5,5,5,5))

plot(x,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-8,2),ylab="")
axis(side=2, at=c(-2,0,2))
mtext("red line", side = 2, line=2.5, at=0)

par(new=T)
plot(x,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(98,108), ylab="")
axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
mtext("blue line", side=4, line=2.5, at=100)

Bir Tufte stiline ulaşmak için otomatik olarak oluşturulan sınırları nasıl kaldırabilir ve yalnızca eksen çizgilerini koruyabilirim?


5
Örneğin, içindeki btyargümana bakın . Bu argümanı çağrınızda iletebilirsiniz . ?parbty="n"plot
Glen_b

3
FWIW, Tufte daha da ileri gitti: bazı durumlarda eksenlerin parçalarını silmenin nasıl ek bilgi sağladığını, her ekseni etkili bir şekilde veri aralığının görsel bir görüntüsüne dönüştürdüğünü gösterdi. Bundan esinlenerek, 1989'da bu tasarımı içeren (Tufte ve Bill Cleveland'ın grubundan esinlenilen birçok diğerleri arasında) küçük çoklu grafikler üretmek için yazılım yazdım ve daha sonra birkaç milyon grafik ürettim. Görsel olarak çok fazla veri çıkarmak zorunda olduğunuzda, bu tür prensipler gerçekten işe yarıyor.
whuber

@whuber Etkili olarak, eksenleri bir çeşit halı çizimiyle değiştiriyor muydunuz?
Silverfish

2
@Silver Bir halı arsa çizmek ayrı bir konudur - ve ben de bunu yaptım. Bununla birlikte, bir halı arsa yokken bile, her ekseni nerede durduracağınızı ve çizmeye başlayacağınızı seçebilirsiniz. Minimum olarak başlattığınızda ve maksimumda durdurduğunuzda, her marjinal veri dağıtımının tüm aralığının görsel bir temsilini elde ettiniz.
whuber

2
@whuber Teşekkürler, şimdi neye atıfta bulunduğunuzu anlıyorum - Tufte bunu bir "aralık çerçevesi" olarak adlandırıyor (ve sadece ekstremadaki çizgileri durdurmayı değil, aynı zamanda değerlerini belirtmek için son etiketleri de kullanmanızı önerir - ne "aralık etiketli aralık çerçevesini" çağırır). Referans isteyen daha sonraki okuyucular için, bu Kantitatif Bilginin Görsel Gösterimi, Bölüm 7'den ("Grafiksel Öğeleri Çok İşlevli Hale Getirmek"). Bu çok görüntülenen bir iş parçacığı olduğu için, "Tufte'nin ekseni" nin gerçekten ne anlama gelebileceğine dair bir örnek (ve soru, bazı R kodu verildi) görmek güzel olurdu.
Gümüş Balık

Yanıtlar:



5

Bunu yapmak kolaydır, sadece argümanı dahil edersiniz axes=FALSE. Düşünmek:

x  <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100) + 100

windows()
  par(mar=c(5,5,5,5))
  plot(x, y1, pch=0, type="b", col="red", yaxt="n", ylim=c(-8,2), ylab="", axes=F)
  axis(side=2, at=c(-2,0,2))
  mtext("red line", side = 2, line=2.5, at=0)

  par(new=T)
  plot(x, y2, pch=1, type="b", col="blue", yaxt="n", ylim=c(98,108), ylab="", axes=F)
  axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
  mtext("blue line", side=4, line=2.5, at=100)

resim açıklamasını buraya girin

Bunun histogramlar için eşit derecede iyi çalıştığını unutmayın:

windows()
hist(y1, axes=F)

resim açıklamasını buraya girin


4

Eğer kullanırsan

par(bty = 'n') 

Hayvanat bahçesi için tamir edecek arsa çağırmadan önce. Ayrıca, çizim komutuna geçilemediği çeşitli durumlar için de düzeltebilir.

(Çizim için diğer çerçeve türleri için par () yardımındaki bty seçeneğine bakın)


0

Tufte'e atıfta bulunmadan, arazilerdeki sınırları kaldırmanın daha genel sorusunu cevaplıyorum.

Bir histogram için btn = 'n' nin sınırdan kurtulduğunu bulamadım.

Histogramlar için çalışan ve tüm grafik türleri için çalışması gereken bir çözüm, kenarlığın çizgi türünü görünmez olarak ayarlamaktır: lty = "blank"

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.