Apa cara termudah untuk membuat plot berkualitas publikasi di Linux?


17

Kami dapat berasumsi bahwa kami memiliki file CSV dan kami ingin plot garis yang sangat mendasar dengan beberapa baris pada satu plot dan legenda sederhana.


2
Bagaimana Anda mendefinisikan 'kualitas publikasi'? Tolong jelaskan aspek apa yang ingin Anda lihat tertutup ... misalnya penggunaan warna, lebar garis, dll. Haruskah jawaban berfokus pada ukuran font, bukan?
Egon Willighagen

Jawaban:


14

Cara termudah adalah menggunakan R

Gunakan read.csvuntuk memasukkan data ke R, lalu gunakan kombinasi perintah plotdanline

Jika Anda menginginkan sesuatu yang benar-benar istimewa, maka lihatlah perpustakaan ggplot2 atau kisi .

Dalam ggplot2perintah berikut harus Anda mulai.

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)   

Ini akan memberi Anda plot berikut:

Alur plot http://img84.imageshack.us/img84/6393/tmpq.jpg

Menyimpan plot di R

Menyimpan plot di R mudah:

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

Alih-alih jpeg, Anda juga dapat menyimpan sebagai pdffile atau file tambahan:

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

Bagaimana dengan menyimpan ke file?
Łukasz Lew

1
Atau sedikit lebih ringkas dengan lelehan dan qplot:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
hadley

Sebenarnya, cara yang lebih mudah adalah menggunakan R + deducer dengan ggplot2 (ada rilis baru yang akan keluar dalam beberapa bulan ke depan. Beta saat ini tersedia)
Tal Galili

4
Contoh yang bagus, tetapi plotnya hampir tidak berkualitas. Atau setidaknya tidak ada jurnal yang saya terbitkan yang akan menerimanya.
Matti Pastell

3
"Kualitas publikasi sulit" ???? Saya menyadari bahwa itu tidak sempurna - frasa "... jika Anda memulai .." mencakup sedikit itu. Tetapi dengan sedikit pekerjaan tambahan, yaitu label sumbu, saya akan mengatakan tidak apa-apa. BTW, jurnal apa yang Anda terbitkan?
csgillespie

13

Sulit untuk melewati R untuk grafis. Anda dapat melakukan apa yang Anda inginkan dalam 3 baris. Misalnya, dengan asumsi file csv memiliki empat kolom:

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)

Bagaimana dengan mempublikasikannya?
Łukasz Lew

5
R menghasilkan beberapa kualitas grafis terbaik. Sebagai editor jurnal penelitian internasional, saya ingin semua penulis menggunakan R.
Rob Hyndman

1
.. lihat komentar saya pada pertanyaan ... bagaimana Anda mendefinisikan 'kualitas publikasi', atau 'kualitas terbaik' ... dari perspektif editor?
Egon Willighagen

19
Saya suka melihat grafik vektor (tanpa jpegs), desain grafis mengikuti prinsip-prinsip Tufte & Cleveland, font yang mudah dibaca, legenda yang tidak berantakan, tidak ada latar belakang yang berarsir, batas sumbu yang masuk akal dan interval centang, sumbu berlabel, tidak ada tumpang tindih teks dan karakter atau garis yang diplot. , dll. Sebagian besar penulis menggunakan pengaturan default perangkat lunak mereka, sehingga perangkat lunak yang baik memiliki standar yang baik. Di sinilah Excel gagal total dan R cukup baik. Tetapi dimungkinkan untuk menghasilkan grafik yang buruk di R dan grafik yang bagus di Excel. Hanya lebih mudah untuk menghasilkan grafik berkualitas tinggi dalam R.
Rob Hyndman

12

R jelas jawabannya. Saya hanya akan menambahkan apa yang sudah dikatakan Rob dan Colin:

Untuk meningkatkan kualitas plot Anda, Anda harus mempertimbangkan menggunakan satu Kairo paket untuk perangkat output. Itu akan sangat meningkatkan kualitas grafis akhir. Anda cukup memanggil fungsi sebelum merencanakan dan mengalihkan ke Kairo sebagai perangkat output.

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

Terakhir, dalam hal memasukkannya ke dalam publikasi, itulah peran yang Sweavedimainkan. Itu membuat menggabungkan plot dengan kertas Anda menjadi operasi sepele (dan memiliki manfaat tambahan meninggalkan Anda dengan sesuatu yang dapat direproduksi dan dimengerti). Gunakan cacheSweavejika Anda memiliki perhitungan yang berjalan lama.


2
Mungkin lebih baik daripada menggunakan Kairo untuk menghasilkan gambar bitmap adalah dengan menyimpan grafik sebagai vektor, yang bebas resolusi, jadi terlihat lebih baik ketika diubah ukurannya, dan selalu sesuai dengan resolusi cetak - Saya suka svg, yang dapat dengan mudah diedit dengan inkscape .
naught101

10

Alat favorit saya adalah Python dengan mathplotlib

Keuntungan:

  • Ekspor langsung dari lingkungan tempat saya melakukan percobaan
  • Dukungan untuk struktur data yang cekatan / numpy
  • Sintaks / opsi yang familiar (latar belakang matlab)
  • Dukungan lateks penuh untuk label / legenda dll. Jadi pengaturan huruf yang sama seperti pada sisa dokumen Anda!

Secara khusus, untuk berbagai format file seperti svg dan eps, gunakan parameter format savefig

Contoh: input.csv

"Baris 1", 0,5,0,8,1,0,0,9,0,9
"Jalur 2", 0.2.0.7.1.2.1.1.1.1.1

Kode:

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

Bisakah Anda memasukkan cuplikan kode untuk kelengkapan? Ini akan sangat berguna bagi orang-orang di masa depan menemukan halaman ini.
Łukasz Lew

@ Łukasz Hmm, ada saran bagaimana cara mengunggah sosok svg?
Peter Smit

4
Anda bisa menyebutkan dalam jawaban Anda bahwa matplotlib memungkinkan rendering semua tipografi dalam plot dengan LaTeX sehingga terintegrasi sempurna secara visual.
Benjamin Bannier

Saya bertanya-tanya mengapa matplotlib belum diintegrasikan ke dalam R?
naught101

6

Lihatlah galeri sampel untuk tiga perpustakaan visualisasi populer:

Untuk dua yang pertama, Anda bahkan dapat melihat kode sumber yang terkait - hal-hal sederhana adalah sederhana, tidak banyak baris kode. Kasing prefuse akan memiliki kode Java boilerplate yang diperlukan. Ketiganya mendukung sejumlah backend / perangkat / renderers (pdf, ps, png, dll). Ketiganya jelas mampu grafis berkualitas tinggi.

Saya pikir itu cukup banyak bermuara pada bahasa mana yang paling nyaman bagi Anda. Ikutilah.



1

Mudah itu relatif. Tidak ada alat yang mudah sampai Anda tahu cara menggunakannya. Beberapa alat mungkin tampak lebih sulit pada awalnya, tetapi memberi Anda kontrol yang lebih halus setelah Anda menguasainya.

Saya baru-baru ini mulai membuat plot saya di pgfplots . Menjadi paket LaTeX (di atas tikz), itu sangat bagus untuk membuat semuanya terlihat baik. Font akan konsisten dengan sisa dokumen dan lebih mudah untuk mengintegrasikan plot Anda secara visual. Ini bukan pilihan termudah untuk membuat plot, tetapi ini adalah cara yang lebih mudah untuk membuat plot yang tentu saja berkualitas publikasi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.