Cách dễ nhất để tạo các lô chất lượng xuất bản trong Linux là gì?


17

Chúng tôi có thể giả định rằng chúng tôi có tệp CSV và chúng tôi muốn một âm mưu dòng rất cơ bản với một số dòng trên một âm mưu và một chú giải đơn giản.


2
Làm thế nào để bạn xác định "chất lượng xuất bản"? Vui lòng giải thích về những khía cạnh bạn muốn thấy được bảo hiểm ... ví dụ: sử dụng màu sắc, độ rộng đường, v.v. Thay vào đó, câu trả lời có nên tập trung vào kích thước phông chữ không?
Egon Willighagen

Câu trả lời:


14

Cách dễ nhất là sử dụng R

Sử dụng read.csvđể nhập dữ liệu vào R, sau đó sử dụng kết hợp các lệnh plotline

Nếu bạn muốn một cái gì đó thực sự đặc biệt, hãy nhìn vào các thư viện ggplot2 hoặc mạng .

Trong ggplot2các lệnh sau sẽ giúp bạn bắt đầu.

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)   

Điều này sẽ cung cấp cho bạn cốt truyện sau đây:

Sơ đồ đường dây http://img84.imageshack.us/img84/6393/tmpq.jpg

Lưu lô trong R

Lưu lô trong R rất đơn giản:

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

Thay vì jpeg, bạn cũng có thể lưu dưới dạng pdfhoặc tệp tin mô tả:

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

Làm thế nào về việc lưu vào tập tin?
Łukasz Lew

1
Hoặc ngắn gọn hơn một chút với sự tan chảy và qplot:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
hadley

Trên thực tế, một cách thậm chí còn dễ dàng hơn là sử dụng bộ suy luận R + với ggplot2 (có một bản phát hành mới sắp ra mắt trong vài tháng tới. Một bản beta hiện đang có sẵn)
Tal Galili

4
Ví dụ đẹp, nhưng cốt truyện hầu như không được công bố chất lượng. Hoặc ít nhất không có tạp chí nào tôi xuất bản sẽ chấp nhận nó.
Matti Pastell

3
"Chất lượng xuất bản khó" ???? Tôi nhận ra rằng nó không hoàn hảo - cụm từ "... nếu bạn bắt đầu .." bao gồm một chút. Nhưng với một chút công việc bổ sung, tức là nhãn trục, tôi sẽ nói nó ổn. BTW, những tạp chí nào bạn xuất bản trong?
csgillespie

13

Thật khó để vượt qua R cho đồ họa. Bạn có thể làm những gì bạn muốn trong 3 dòng. Ví dụ: giả sử tệp csv có bốn cột:

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)

Làm thế nào về việc đưa nó vào xuất bản?
Łukasz Lew

5
R tạo ra một số đồ họa chất lượng tốt nhất xung quanh. Là biên tập viên của một tạp chí nghiên cứu quốc tế, tôi rất thích tất cả các tác giả của chúng tôi sử dụng R.
Rob Hyndman

1
.. xem nhận xét của tôi về câu hỏi ... làm thế nào để bạn xác định 'chất lượng xuất bản' hoặc 'chất lượng tốt nhất' ... từ góc độ biên tập viên?
Egon Willighagen

19
Tôi thích xem đồ họa vector (không có jpeg), thiết kế đồ họa theo các nguyên tắc của Tufte & Cleveland, phông chữ có thể đọc được, các huyền thoại không bị che khuất, không có nền mờ, giới hạn trục hợp lý và các khoảng đánh dấu, trục được dán nhãn, không chồng chéo văn bản và vẽ các ký tự hoặc dòng , v.v ... Hầu hết các tác giả sử dụng các cài đặt mặc định của phần mềm của họ, vì vậy phần mềm tốt có mặc định tốt. Đây là nơi Excel thất bại thảm hại và R làm khá tốt. Nhưng có thể tạo ra các biểu đồ tệ hại trong R và các biểu đồ tốt trong Excel. Thật dễ dàng hơn để sản xuất đồ họa chất lượng cao trong R.
Rob Hyndman

12

R chắc chắn là câu trả lời. Tôi chỉ muốn thêm vào những gì Rob và Colin đã nói:

Để nâng cao chất lượng âm mưu của bạn, bạn nên xem xét sử dụng các Cairo gói cho các thiết bị đầu ra. Điều đó sẽ cải thiện đáng kể chất lượng của đồ họa cuối cùng. Bạn chỉ cần gọi hàm trước khi vẽ và nó chuyển hướng đến Cairo làm thiết bị đầu ra.

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

Cuối cùng, về mặt đưa nó vào một ấn phẩm, đó là vai trò Sweave. Nó làm cho việc kết hợp các mảnh đất với giấy của bạn trở thành một hoạt động tầm thường (và có thêm lợi ích là để lại cho bạn một thứ gì đó có thể tái tạo và dễ hiểu). Sử dụng cacheSweavenếu bạn có tính toán chạy dài.


2
Có lẽ tốt hơn so với việc sử dụng Cairo để tạo ra hình ảnh bitmap là lưu đồ thị dưới dạng vectơ, độc lập với độ phân giải, vì vậy trông đẹp hơn khi thay đổi kích thước và luôn phù hợp với độ phân giải in - Tôi thích svg, có thể dễ dàng chỉnh sửa bằng inkscape .
ness101

10

Công cụ yêu thích của tôi là Python với mathplotlib

Những lợi thế:

  • Xuất ngay lập tức từ môi trường nơi tôi làm thí nghiệm
  • Hỗ trợ cho các cấu trúc dữ liệu scipy / numpy
  • Cú pháp / tùy chọn quen thuộc (nền matlab)
  • Hỗ trợ đầy đủ latex cho nhãn / truyền thuyết, vv Vì vậy, sắp chữ giống như trong phần còn lại của tài liệu của bạn!

Cụ thể, đối với các định dạng tệp khác nhau như svg và eps, hãy sử dụng tham số định dạng của savefig

Một ví dụ: input.csv

"Dòng 1", 0,5,0,8,1,0,0,9,0,9
"Dòng 2", 0,2,0,7,1,2,1,1,1.1

Mã số:

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

Bạn có thể đặt một đoạn mã cho sự hoàn chỉnh? Nó sẽ rất hữu ích cho những người trong tương lai tìm thấy trang này.
Łukasz Lew

@ Ukasz Hmm, một số gợi ý làm thế nào để tải lên một con số svg?
Peter Smit

4
Bạn có thể đã đề cập trong câu trả lời của mình rằng matplotlib cho phép hiển thị tất cả các kiểu chữ trong cốt truyện với LaTeX để nó tích hợp hoàn hảo một cách trực quan.
Benjamin Bannier

Tôi tự hỏi tại sao matplotlib chưa được tích hợp vào R?
ness101

6

Hãy xem các phòng trưng bày mẫu cho ba thư viện trực quan phổ biến:

Đối với hai người đầu tiên, bạn thậm chí có thể xem mã nguồn được liên kết - công cụ đơn giản là đơn giản, không có nhiều dòng mã. Trường hợp tiền sử dụng sẽ có mã soạn sẵn Java cần thiết. Cả ba đều hỗ trợ một số phụ trợ / thiết bị / trình kết xuất (pdf, ps, png, v.v.). Cả ba đều rõ ràng có khả năng đồ họa chất lượng cao.

Tôi nghĩ nó khá giống với ngôn ngữ mà bạn cảm thấy thoải mái nhất khi làm việc. Đi với điều đó.



1

Dễ là tương đối. Không có công cụ nào là dễ dàng cho đến khi bạn biết cách sử dụng nó. Một số công cụ ban đầu có thể khó khăn hơn, nhưng cung cấp cho bạn quyền kiểm soát chi tiết hơn nhiều khi bạn thành thạo chúng.

Gần đây tôi đã bắt đầu thực hiện âm mưu của mình trong pgfplots . Là một gói LaTeX (trên đầu trang tikz), nó đặc biệt tốt trong việc làm cho mọi thứ trở nên tốt đẹp. Các phông chữ sẽ phù hợp với phần còn lại của tài liệu và việc tích hợp các lô của bạn một cách trực quan sẽ dễ dàng hơn nhiều. Đây không phải là lựa chọn dễ dàng nhất để tạo ra các mảnh đất, nhưng đó là một cách khá dễ dàng để tạo ra các lô chắc chắn có chất lượng xuất bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.