2017-01-02 15 views
6

Aynı görüntüde birden çok çizim yapmak istiyorum ve görüntüye bağlı olarak farklı sayıda çizim yapmak istiyorum. Kesin olmak gerekirse, önce bir 1x2 parsel matrisi ve ardından 3x2 parsel matrisi yaratıyorum. Bu iki görüntü için aynı temel ayarları kullanmak istiyorum - özellikle aynı yazı tipi boyutları, çünkü bu bir kağıt için ve yazı tipi boyutu bir çizim için en az 6 pt olmalıdır. Bunu başarmak için Yazı tiplerinin yeniden boyutlandırılmasını nasıl engelleyebilirim?

, ben R aşağıdaki kodu yazdım:

filename = "test.png" 
font.pt = 6 # font size in pts (1/72 inches) 
total.w = 3 # total width in inches 
plot.ar = 4/3 # aspect ratio for single plot 
mat.col = 2 # number of columns 
mat.row = 1 # number of rows 
dpi = 300 

plot.mar = c(3, 3, 1, 2) + 0.1 
plot.mgp = c(2, 1, 0) 
plot.w = total.w/mat.col - 0.2 * plot.mar[2] - 0.2 * plot.mar[4] 
plot.h = plot.w/plot.ar 
total.h = (plot.h + 0.2 * plot.mar[1] + 0.2 * plot.mar[3]) * mat.row 

png(filename, width = total.w, height = total.h, res = dpi * 12/font.pt, units = "in") 

par(mfrow = c(mat.row, mat.col), mai = 0.2 * plot.mar, mgp = plot.mgp) 

plot(1, 1, axes = T, typ = 'p', pch = 20, xlab = "Y Test", ylab = "X Test") 

dev.off() 

Gördüğünüz gibi, ben 3 inç toplam genişliğini ayarlayın ve sonra, böylece sadece bir imaj toplam yüksekliğini hesaplamak parsellerin en boy oranı doğrudur. Yazı tipi boyutu yalnızca çözünürlüğü bir faktörle değiştirir. Her neyse, sorun şu an mat.row = 1'dan mat.row = 3'a geçtiğimde yazı tipi boyutu önemli ölçüde değişiyor. Diğer şeyleri de değiştiririm, özellikle de bunları önce inç olarak ayarladığım halde, eksenlerin ve kenar boşluklarının etiketlenmesi.

3 satır ayarlanır

(Kırpılmış resim): Sadece 1 satır ayarlanır

3 rows

(kırpılan resim): göz

1 row

Ben nasıl Bunu önlemek mi? Görebildiğim kadarıyla elimden geleni yaptım. Bu oldukça uzun sürdü, bu yüzden gglplot'a geçmek ve her şeyi tekrar sıfırdan öğrenmek yerine işe almak istiyorum. Aynı zamanda yeterince küçük bir şey olduğunu umuyorum. ?par yılında

+0

belki 'par (ps = font.pt)' istiyor? – Nate

+0

[Bu SO soru/cevap] (http://stackoverflow.com/questions/30467015/why-does-r-re-size-everything-in-the-plot-but-not-the-text-when-exported) yardımcı olabilir. – eipi10

+0

eipi10: Belki de bunu yanlış anlamışımdır, ancak bu cevabın içindeki adam, genişlik ve yükseklik değiştirdiğinizde öğelerin aynı boyutta kalmasıdır. Biliyorum, özellikle burada kullanmaya çalıştığım şey. Benim problemim, bunun, özel örneğimde nasıl çalıştığını DEĞİL. – Fearabbit

cevap

4

bulabildiğimiz:

bir düzende tam iki satır ve sütun ile "cex" 0.83 kat azalır baz değere: Üç veya iki daha varsa satırlar veya sütunlar, azaltma faktörü 0.66'dır. Bu nedenle

, (1 2) için mfrow değerleri değiştirmek (2, 3) 0.66 0.83 den cex değeri değişir. cex, yazı tipi boyutunu ve metin satırı yüksekliğini etkiler.

Şimdi, el çizimleri için cex değerini el ile belirtebilirsiniz.

Umut, ihtiyacınız olan şey budur.

Plot mat.row = 1 (kırpılan) için: mat.row = 1 (cropped) Ve arsa mat.row = 3 için (kırpılan): mat.row = 3 (cropped)

+1

Çok teşekkürler! Bu faktörler, tam olarak farklı satır ve sütunlarla deney yaparken deneysel olarak bulduklarımdır. Beni deli ediyordu, ama bu açıklıyor. Savunmamda, özellikle cex değerlerini değiştirmekten kaçınılıyorum, bu yüzden açıklamaların gizli kaldığından şüphelenmedim? – Fearabbit