Linux altında yayın kalitesinde grafikler oluşturmanın en kolay yolu nedir?


17

CSV dosyasına sahip olduğumuzu varsayabiliriz ve tek bir arsa üzerinde birkaç satır ve basit bir açıklama içeren çok temel bir çizgi grafiği isteriz.


2
'Yayın kalitesini' nasıl tanımlıyorsunuz? Lütfen hangi konuları ele almak istediğinizi açıklayın ... örn. Renk kullanımı, çizgi genişlikleri vb. Yanıtlar yazı tipi boyutuna mı odaklanmalıdır?
Egon Willighagen

Yanıtlar:


14

En kolay yol R'yi kullanmaktır

read.csvVerileri R'ye girmek için kullanın , ardından plotve linekomutlarının bir kombinasyonunu kullanın

Gerçekten özel bir şey istiyorsanız, o zaman ggplot2 veya kafes kütüphanelerine bakın .

In ggplot2aşağıdaki komutları başlamanıza gerekir.

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)   

Bu size aşağıdaki grafiği verecektir:

Çizgi grafiği http://img84.imageshack.us/img84/6393/tmpq.jpg

R'deki parselleri kaydetme

Grafikleri R'de kaydetmek basittir:

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

Yerine, jpegbir pdfveya postscript dosyası olarak da kaydedebilirsiniz :

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

Dosyaya kaydetmeye ne dersiniz?
asukasz Lew

1
Veya eriyik ve qplot ile biraz daha özlü:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
hadley

Aslında, ggplot2 ile R + deducer'ı kullanmak daha da kolay bir yoldur (bunun önümüzdeki birkaç ay içinde çıkacak yeni bir sürümü var. Bir beta şu anda mevcuttur)
Tal Galili

4
Güzel bir örnek, ancak arsa yayın kalitesi neredeyse hiç değil. Veya yayınladığım dergilerin en azından hiçbiri bunu kabul etmez.
Matti Pastell

3
"Yayın kalitesi zor" ???? Mükemmel olmadığını anlıyorum - "... eğer başlatsın ..." ifadesi bu noktayı kapsıyor. Ancak küçük bir ek çalışma, yani eksen etiketleri ile, bunun iyi olduğunu söyleyebilirim. BTW, hangi dergilerde yayınlıyorsunuz?
csgillespie

13

Grafikler için R'yi geçmek zor. İstediğinizi 3 satırda yapabilirsiniz. Örneğin, csv dosyasının dört sütunu olduğunu varsayarsak:

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)

Yayına koymaya ne dersiniz?
asukasz Lew

5
R en kaliteli grafiklerden bazılarını üretir. Uluslararası bir araştırma dergisinin editörü olarak, tüm yazarlarımızın
R'yi

1
.. soru hakkındaki yorumuma bakın ... 'yayın kalitesi' veya 'en iyi kalite' ... editör açısından nasıl tanımlıyorsunuz?
Egon Willighagen

19
Vektör grafikleri (jpeg yok), Tufte & Cleveland ilkelerini takip eden grafik tasarım, okunabilir yazı tipleri, düzenli efsaneler, gölgeli arka planlar, mantıklı eksen sınırları ve kene aralıkları, etiketli eksenler, metin çakışması ve karakterler veya çizgiler çizmekten hoşlanıyorum Çoğu yazar, yazılımlarının varsayılan ayarlarını kullanır, bu nedenle iyi yazılımların varsayılanları iyi olur. Excel'in sefil bir şekilde başarısız olduğu ve R'nin oldukça iyi yaptığı yer burası. Ancak R'de berbat grafikler ve Excel'de iyi grafikler üretmek mümkündür. R'de yüksek kaliteli grafikler üretmek daha kolay
Rob Hyndman

12

R kesinlikle cevaptır. Sadece Rob ve Colin'in zaten söylediklerine ekleyeceğim:

Senin araziler kalitesini artırmak için, kullanmayı düşünmelisiniz Kahire paketi çıktı aygıtı için. Bu , son grafiklerin kalitesini büyük ölçüde artıracaktır . Fonksiyonu çizmeden önce çağırmanız yeterlidir ve çıkış cihazı olarak Kahire'ye yönlendirir.

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

Son olarak, bunu bir yayına koymak açısından, Sweave oynamaktadır. Parselleri kağıdınızla birleştirmek önemsiz bir işlemdir (ve sizi tekrarlanabilir ve anlaşılabilir bir şeyle bırakmanın ek avantajına sahiptir ). cacheSweaveUzun süredir çalışan hesaplamalarınız varsa kullanın .


2
Muhtemelen bir bitmap görüntü üretmek için Kahire'yi kullanmaktan daha iyidir, grafikleri çözünürlükten bağımsız olan vektörler olarak kaydetmek, bu yüzden yeniden boyutlandırıldığında daha iyi görünmek ve her zaman baskı çözünürlüğüne uymaktır - Inkscape ile kolayca düzenlenebilen svg'yi seviyorum .
naught101

10

En sevdiğim araç mathplotlib ile Python

Avantajlar:

  • Deneylerimi yaptığım ortamdan anında ihracat
  • Scipy / numpy veri yapıları için destek
  • Tanıdık sözdizimi / seçenekler (matlab arka planı)
  • Etiketler / efsaneler vb. İçin tam lateks desteği. Belgenizin geri kalanındaki gibi dizgi!

Özellikle, svg ve eps gibi farklı dosya formatları için savefig dosyasının format parametresini kullanın

Bir örnek: input.csv

"Satır 1", 0,5,0,8,1,0,0,9,0,9
"Satır 2", 0.2,0.7,1.2,1.1,1.1

Kod:

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

Tamamlama için bir kod snippet'i koyabilir misiniz? Gelecekte bu sayfayı bulan kullanıcılar için çok yararlı olacaktır.
asukasz Lew

@ Asukasz Hmm, nasıl bir svg rakam yüklemek için bazı öneri?
Peter Smit

4
Cevabınızda matplotlib'in LaTeX ile arsadaki tüm tipografinin oluşturulmasına izin verdiğini ve böylece görsel olarak mükemmel bir şekilde bütünleştiğini söyleyebilirsiniz.
Benjamin Bannier

Acaba neden matplotlib neden R ile entegre olmamış?
naught101

6

Üç popüler görselleştirme kütüphanesi için örnek galerilere göz atın:

İlk ikisi için, ilişkili kaynak kodunu bile görüntüleyebilirsiniz - basit şeyler basittir, çok fazla kod satırı değildir. Prefuse durumunda gerekli Java kaynak plakası kodu olacaktır. Her üçü de bir takım arka uçları / cihazları / oluşturucuları (pdf, ps, png, vb.) Destekler. Üçü de açıkça yüksek kaliteli grafikler yeteneğine sahiptir.

Sanırım hangi dilde en rahat çalıştığınıza bağlı kalıyor.



1

Easy is relative. No tool is easy until you know how to use it. Some tools may appear more difficult at first, but provide you with much more fine-grained control once you master them.

I have recently started to make my plots in pgfplots. Being a LaTeX package (on top of tikz), it is particularly good at making things look good. Fonts will be consistent with the rest of the document and it's much easier to integrate your plots visually. It's not the easiest option to make plots, but it's a rather easy way to make plots that are certainly publication-quality.

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.