लिनक्स के तहत प्रकाशन-गुणवत्ता वाले भूखंड बनाने का सबसे आसान तरीका क्या है?


17

हम मान सकते हैं कि हमारे पास CSV फ़ाइल है और हम एक प्लॉट और एक साधारण किंवदंती पर कई लाइनों के साथ एक बहुत ही मूल लाइन प्लॉट चाहते हैं।


2
आप 'प्रकाशन-गुणवत्ता' को कैसे परिभाषित करते हैं? कृपया विस्तृत करें कि आप किन पहलुओं को कवर करना पसंद करते हैं ... जैसे रंग का उपयोग, लाइन की चौड़ाई, आदि का उत्तर फ़ॉन्ट आकार पर केंद्रित होना चाहिए, बजाय?
इगॉन विलीघेन

जवाबों:


14

सबसे आसान तरीका है R का उपयोग करना

read.csvR में डेटा दर्ज करने के लिए उपयोग करें , फिर plotऔर lineकमांड के संयोजन का उपयोग करें

यदि आप वास्तव में कुछ विशेष चाहते हैं, तो पुस्तकालयों ggplot2 या जाली को देखें

में ggplot2निम्न कमांड आप आरंभ करना चाहिए।

require(ggplot2)
#You would use read.csv here
N = 10
d = data.frame(x=1:N,y1=runif(N),y2=rnorm(N), y3 = rnorm(N, 0.5))
p = ggplot(d)

p = p+geom_line(aes(x, y1, colour="Type 1"))
p = p+geom_line(aes(x, y2, colour="Type 2"))
p = p+geom_line(aes(x, y3, colour="Type 3"))
#Add points
p = p+geom_point(aes(x, y3, colour="Type 3"))
print(p)   

यह आपको निम्नलिखित कथानक देगा:

लाइन प्लॉट http://img84.imageshack.us/img84/6393/tmpq.jpg

आर में भूखंडों की बचत

आर में प्लॉट की बचत करना सीधा है:

#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()

इसके बजाय jpegआप एक pdfया पोस्टस्क्रिप्ट फ़ाइल के रूप में भी सहेज सकते हैं :

#This example uses R base graphics
#Just change to print(p) for ggplot2
pdf("figure.pdf")
plot(d$x,y1, type="l")
lines(d$x, y2)
dev.off()

फ़ाइल को सहेजने के बारे में कैसे?
कसुज ल्यू

1
या थोड़ा और अधिक पिघल और कप्लोट के साथ:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
हैडली

वास्तव में, एक आसान तरीका यह भी है कि ggplot2 के साथ R + डिड्यूसर का उपयोग किया जाए (इसके बारे में एक नई रिलीज़ है जो अगले कुछ महीनों में निकलने वाली है। एक बीटा वर्तमान में उपलब्ध है)
ताल गैली

4
अच्छा उदाहरण है, लेकिन भूखंड शायद ही गुणवत्ता प्रकाशन है। या कम से कम मैं जिन पत्रिकाओं को प्रकाशित करता हूं उनमें से कोई भी इसे स्वीकार नहीं करेगा।
मैटी पेस्टल

3
"शायद ही प्रकाशन गुणवत्ता" ???? मुझे लगता है कि यह सही नहीं है - वाक्यांश "... क्या आपको शुरू करना चाहिए .." उस बिट को कवर करता है। लेकिन थोड़ा अतिरिक्त काम, यानी एक्सिस लेबल के साथ, मैं कहूंगा कि यह ठीक है। BTW, आप किन पत्रिकाओं में प्रकाशित होते हैं?
csgillespie

13

ग्राफिक्स के लिए अतीत में जाना मुश्किल है। आप वह कर सकते हैं जो आप 3 लाइनों में चाहते हैं। उदाहरण के लिए, csv फ़ाइल को संभालने के चार कॉलम हैं:

x <- read.csv("file.csv")
matplot(x[,1],x[,2:4],type="l",col=1:3)
legend("topleft",legend=c("A","B","C"),lty=1,col=1:3)

इसे प्रकाशन में कैसे रखा जाए?
कसुज ल्यू

5
आर आसपास कुछ बेहतरीन क्वालिटी के ग्राफिक्स तैयार करता है। एक अंतरराष्ट्रीय शोध पत्रिका के संपादक के रूप में, मैं आर। का उपयोग करने के लिए हमारे सभी लेखकों से प्यार करता हूँ
रोब हंडमैन

1
.. इस सवाल पर मेरी टिप्पणी देखें ... आप संपादक के नजरिए से 'प्रकाशन-गुणवत्ता', या 'सर्वोत्तम गुणवत्ता' को कैसे परिभाषित करते हैं?
इगॉन विलीघेन

19
मैं वेक्टर ग्राफिक्स (कोई jpegs) देखना पसंद करता हूं, टफ्टे एंड क्लीवलैंड के सिद्धांतों का अनुसरण करते हुए ग्राफिकल डिज़ाइन, पठनीय फोंट, अशुद्ध किंवदंतियों, कोई छायांकित पृष्ठभूमि, समझदार अक्ष सीमाएं और टिक अंतराल, लेबल किए गए अक्ष, पाठ का कोई ओवरलैप और वर्ण या प्लॉटिंग वर्ण या रेखाएँ , आदि अधिकांश लेखक अपने सॉफ़्टवेयर की डिफ़ॉल्ट सेटिंग्स का उपयोग करते हैं, इसलिए अच्छे सॉफ़्टवेयर में अच्छी चूक हैं। यह वह जगह है जहाँ एक्सेल बुरी तरह से विफल रहता है और आर बहुत अच्छा करता है। लेकिन आर में घटिया ग्राफ़ और एक्सेल में अच्छे ग्राफ़ का उत्पादन करना संभव है। यह सिर्फ उच्च गुणवत्ता वाले ग्राफिक्स का उत्पादन करने के लिए आर। में बेहतर है
रोब Hyndman

12

आर निश्चित रूप से जवाब है। मैं सिर्फ रोब और कॉलिन के बारे में पहले ही कह चुका हूँ:

अपने भूखंडों की गुणवत्ता में सुधार करने के लिए, आपको काहिरा पैकेज का उपयोग करने पर विचार करना चाहिए आउटपुट डिवाइस के लिए । यह अंतिम ग्राफिक्स की गुणवत्ता में बहुत सुधार करेगा । आप बस प्लॉट करने से पहले फ़ंक्शन को कॉल करते हैं और यह आउटपुट डिवाइस के रूप में काहिरा को रीडायरेक्ट करता है।

Cairo(600, 600, file="plot.png", type="png", bg="white")
plot(rnorm(4000),rnorm(4000),col="#ff000018",pch=19,cex=2) # semi-transparent red
dev.off() # creates a file "plot.png" with the above plot

अंत में, इसे प्रकाशन में रखने के संदर्भ में, यही भूमिका है Sweave। यह आपके पेपर के साथ एक तुच्छ ऑपरेशन के साथ भूखंडों का संयोजन करता है (और आपको कुछ ऐसा करने के लिए छोड़ देने का अतिरिक्त लाभ है जो प्रतिलिपि प्रस्तुत करने योग्य और समझने योग्य है)। cacheSweaveयदि आपके पास लंबे समय से चल रही संगणनाएँ हैं, तो उनका उपयोग करें ।


2
संभवतः बिट्रो इमेज का उत्पादन करने के लिए काहिरा का उपयोग करने से बेहतर है कि ग्राफ़ को वैक्टर के रूप में सहेजा जाए, जो रिज़ॉल्यूशन स्वतंत्र हो, इसलिए आकार बदलने पर बेहतर दिखें, और हमेशा प्रिंट रिज़ॉल्यूशन सूट करें - मुझे svg पसंद है, जिसे आसानी से इंकस्केप के साथ संपादित किया जा सकता है ।
naught101

10

मेरा पसंदीदा उपकरण मैथप्लोटलिब के साथ पायथन है

फायदे:

  • पर्यावरण में तत्काल निर्यात जहां मैं अपने प्रयोग करता हूं
  • डरावना / सुन्न डेटा संरचनाओं के लिए समर्थन
  • परिचित सिंटैक्स / विकल्प (मैटलैब बैकग्राउंड)
  • लेबल / किंवदंतियों आदि के लिए पूर्ण लेटेक्स समर्थन! आपके दस्तावेज़ के बाकी हिस्सों की तरह ही टाइपसेटिंग!

विशेष रूप से, svg और eps जैसे विभिन्न फ़ाइल स्वरूपों के लिए, savefig के प्रारूप पैरामीटर का उपयोग करें

एक उदाहरण: input.csv

"लाइन 1", 0.5,0.8,1.0,0.9,0.9
"लाइन 2", 0.2,0.7,1.2,1.1,1.1

कोड:

import csv
import matplotlib.pyplot as plt

legends = []
for row in csv.reader(open('input.csv')):
    legends.append(row[0])
    plt.plot(row[1:])

plt.legend(legends)
plt.savefig("out.svg", format='svg')

क्या आप पूर्णता के लिए एक कोड स्निपेट डाल सकते हैं? भविष्य में लोगों के लिए यह पृष्ठ खोजना बहुत उपयोगी होगा।
कसुज ल्यू

@ Toukasz हम्म, कुछ सुझाव कैसे एक svg आंकड़ा अपलोड करने के लिए?
पीटर स्मिट

4
आप अपने उत्तर में उल्लेख कर सकते हैं कि matplotlib, LaTeX के साथ भूखंड में सभी टाइपोग्राफी के प्रतिपादन की अनुमति देता है, इसलिए यह पूरी तरह से नेत्रहीन रूप से एकीकृत करता है।
बेंजामिन बैनियर

मुझे आश्चर्य है कि matplotlib को R में अभी तक एकीकृत क्यों नहीं किया गया है?
n

6

तीन लोकप्रिय दृश्य पुस्तकालयों के लिए नमूना दीर्घाओं पर एक नज़र डालें:

पहले दो के लिए, आप संबंधित स्रोत कोड भी देख सकते हैं - साधारण सामान सरल है, कोड की कई पंक्तियाँ नहीं। प्रीफ्यूज़ केस में अपेक्षित जावा बॉयलरप्लेट कोड होगा। सभी तीन बैकएंड / डिवाइस / रेंडरर्स (पीडीएफ, पीएस, पीएनजी, आदि) के एक नंबर का समर्थन करते हैं। तीनों स्पष्ट रूप से उच्च गुणवत्ता वाले ग्राफिक्स के लिए सक्षम हैं।

मुझे लगता है कि यह बहुत अधिक उबलता है कि आप किस भाषा में काम कर रहे हैं।



1

आसान सापेक्ष है। कोई भी उपकरण तब तक आसान नहीं है जब तक आप यह नहीं जानते कि इसका उपयोग कैसे किया जाए। कुछ उपकरण पहली बार में अधिक कठिन दिखाई दे सकते हैं, लेकिन एक बार जब आप उन्हें मास्टर कर लेते हैं तो आपको बहुत अधिक सूक्ष्म नियंत्रण प्रदान करते हैं।

मैंने हाल ही में pgfplots में अपने प्लॉट बनाना शुरू किया है । एक LaTeX पैकेज (शीर्ष पर tikz) होने के नाते , यह चीजों को अच्छा दिखने में विशेष रूप से अच्छा है। फ़ॉन्ट दस्तावेज़ के बाकी हिस्सों के अनुरूप होंगे और अपने भूखंडों को नेत्रहीन रूप से एकीकृत करना बहुत आसान है। यह भूखंड बनाने का सबसे आसान विकल्प नहीं है, लेकिन यह निश्चित रूप से प्रकाशन-गुणवत्ता वाले भूखंड बनाने का एक आसान तरीका है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.