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.
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.
Câu trả lời:
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 plot
vàline
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 ggplot2
cá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 pdf
hoặ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()
m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
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)
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 cacheSweave
nếu bạn có tính toán chạy dài.
Công cụ yêu thích của tôi là Python với mathplotlib
Những lợi thế:
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')
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 đó.
Một lựa chọn khác là Gnuplot
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.