Eksen ölçeğindeki onay işaretlerini koruyarak kutuyu xyplot
'un etrafından çıkarmakla nasıl gidebilirim? Edward Tufte'nin minimalist veri grafik estetiğinin ruhu içinde, bu eksen çizgileri "veri olmayan mürekkep" ve "silinmiş" olabilir.R kafes xyplot üzerinde eksen ve eksen çizgileri ayrı ayrı kontrol ediliyor
library(lattice)
my.df <- data.frame(x=-10:10)
my.df$y <- my.df$x^2
xyplot(y~x,data=my.df)
Öyle görünüyor ki kafes ekran parametreleri (örneğin axis.line$col
) kontrol eksen çizgileri ve eksen birlikte keneler hem:
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")))
... ki İstenen sonuç değil, bu yüzden kutudan çıkarken hatları kapatmak için basit bir yol gibi görünmüyor.
Ben ile gelip başardık iyi benpanel.segments
kullanarak elle kene işaretleri oluşturmak kaba kuvvet kesmek olduğunu
:
at.x=pretty(c(-10,10))
at.y=pretty(c(0,100))
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")),
scales=list(x=list(at=at.x,labels=at.x),
y=list(at=at.y,labels=at.y)),
panel=function(...){
panel.xyplot(...)
panel.segments(x0=at.x,x1=at.x,y0=-4,y1=-2)
panel.segments(x0=-11.5,x1=-11,y0=at.y,y1=at.y)
}
)
Bu yakındır İstenen sonuç, ancak onay işaretlerinin makul bir uzunlukta olması ve veri noktalarından "güzel" bir uzaklığı telafi etmesi için gerekli oldukça fazla şey vardır. Bu değerler bir grafikten diğerine çeviri yapmaz. Ayrıca, eksen etiketlerinin artık onay işaretlerinden çok uzakta olduğunu unutmayın. Eminim ki bu dolguyu azaltmanın bir yolu var, ama bu sadece kodu daha da çirkin ve daha az taşınabilir hale getirecektir.
Peki, işaret çizgileri ve eksen etiketleri bozulmadan bırakılırken, çizim alanının etrafında "kutu" oluşturan satırların bastırılması nasıl yapılır? Bu yaklaşımın bir kısmını bastırmak için kullanılabiliyor olması, ancak tüm satırların kullanılmaması durumunda (eğer sol ve alt satırları terk etse de, üst ve sağ çizgileri bastıran) bonus puanları.
Bu harika görünüyor. Eksen işlevinin her satırının ne yaptığını ve neden bunu yaptığınızı anlatan bir yorum sunabilir misiniz?Düşük seviyeli eksen işlevleriyle ilgili yardım belgelerini buluyorum ('axis.default' çok aydınlatıcı değil) – mac
@mac, Trellis seçeneklerinde bazı gereksiz değişiklikler olduğunu ve gerçek hilenin özel eksen işlevine "line.col" biçiminde bir resmi argüman sağlar. – BenBarnes
Güzel. FWIW, 'line.col =" black "' gereklidir; çünkü panel.axis() varsayılan olarak satır rengini trellis.par'dan alır. Daha önce “saydam” olarak ayarladığınız ("axis.line") 'ı döndürün. –