2017-01-02 5 views
6

मैं एक ही छवि में कई भूखंडों करना चाहते हैं, और मैं छवि के आधार पर भूखंडों की एक अलग संख्या करना चाहते हैं। सटीक होने के लिए, मैं पहले भूखंडों का 1x2 मैट्रिक्स बना देता हूं, और फिर भूखंडों का 3x2 मैट्रिक्स बना देता हूं। मैं इन दो छवियों के लिए एक ही मूल सेटिंग्स का उपयोग करना चाहते हैं - एक ही फॉन्ट विशेष रूप से आकार, के बाद से यह एक कागज के लिए है और फ़ॉन्ट आकार एक साजिश के लिए कम से कम 6 पॉइंट हो गया है।मैं आर में फोंट, प्लॉट ऑब्जेक्ट इत्यादि का आकार बदलने से कैसे रोक सकता हूं?

इस लक्ष्य को हासिल करने के लिए, मैं आर के लिए निम्न कोड लिखा है:

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() 

आप देख सकते हैं, मैं 3 इंच की कुल चौड़ाई सेट और फिर मेरी छवि के लिए कुल ऊंचाई की गणना, ताकि भूखंडों का पहलू अनुपात सही है। फ़ॉन्ट आकार केवल एक कारक द्वारा संकल्प बदलता है। वैसे भी, समस्या अब है कि फ़ॉन्ट आकार काफी बदल जाता है जब मैं mat.row = 1 से mat.row = 3 करने के लिए जाना है। अन्य बातों के साथ-साथ उदाहरण के लिए कुल्हाड़ियों और मार्जिन की लेबलिंग बदलने के लिए, है, भले ही मैं विशेष रूप से इंच में पहले उन निर्धारित किया है।

जब 3 पंक्तियों सेट कर रहे हैं (फसली छवि)::

3 rows

जब केवल 1 पंक्ति सेट किया गया है (फसली छवि): एक नज़र

1 row

मैं कैसे कर सकता है इसे रोको? जहां तक ​​मैं देख सकता हूं, मैंने जो कुछ भी किया वह मैंने किया। यह मैं काफी समय लगा, इसलिए मैं इस बजाय gglplot का उपयोग करने जा और फिर से खरोंच से सब कुछ सीखने का काम करने के लिए प्राप्त करना चाहते हैं। यह इतना छोटा है कि मुझे उम्मीद है कि मैं बस कुछ बहुत याद कर रहा हूं।

+0

शायद आप चाहते हैं 'सममूल्य (ps = font.pt)'? – Nate

+0

[यह SO प्रश्न/उत्तर] (http://stackoverflow.com/questions/30467015/why-does-r-re-size-everything-in-the-plot-but-not-the-text-when-exported) सहायक हो सकता है। – eipi10

+0

eipi10: हो सकता है कि मैं इसे गलत समझ रहा हूं, लेकिन उस उत्तर में उस व्यक्ति को पता चलता है कि जब आप चौड़ाई और ऊंचाई बदलते हैं तो तत्व समान आकार में रहते हैं। मुझे पता है कि, यह विशेष रूप से मैं यहां उपयोग करने की कोशिश करता हूं। मेरी समस्या यह है कि यह नहीं है कि यह मेरे विशिष्ट उदाहरण में कैसे काम करता है। – Fearabbit

उत्तर

4

?par में हम पा सकते हैं:

एक लेआउट में ठीक दो पंक्तियों और स्तंभों के साथ "CEX" 0.83 का एक पहलू से कम हो जाता है के आधार मूल्य: अगर वहाँ तीन या या तो के और अधिक कर रहे हैं पंक्तियों या स्तंभों, कमी कारक 0.66 है।

इसलिए, जब आप (1 से 2,) से mfrow मूल्यों को बदल (2, 3) 0.66 करने के लिए 0.83 से cex मूल्य बदल जाता है। cex फ़ॉन्ट आकार और टेक्स्ट लाइन ऊंचाई को प्रभावित करता है।

तो, यदि आप स्वयं अपनी भूखंडों के लिए cex मान निर्दिष्ट कर सकते हैं।

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

आशा है, आपको वही चाहिए जो आपको चाहिए।

mat.row = 1 (फसली) के लिए प्लॉट: mat.row = 3 के लिए mat.row = 1 (cropped) और साजिश (फसली): mat.row = 3 (cropped)

+1

बहुत बहुत धन्यवाद! अलग-अलग पंक्तियों और स्तंभों के साथ प्रयोग करते समय इन कारकों को वास्तव में अनुभवजन्य मिला। यह मुझे पागल कर रहा था, लेकिन यह बताता है। मेरी रक्षा में, मैंने विशेष रूप से बदलते हुए सीएक्स मूल्यों से परहेज किया, यही कारण है कि मुझे संदेह नहीं था कि स्पष्टीकरण छिपेगा? Par। – Fearabbit

संबंधित मुद्दे