Answers:
最简单的方法是使用R
用于read.csv
将数据输入到R中,然后使用plot
和line
命令的组合
如果您想要一些特别的东西,请查看库ggplot2或lattice。
在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
在R中保存图
在R中保存图很简单:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()
除了,jpeg
您还可以另存为pdf
或postscript文件:
#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)
对于图形,很难超过R。您可以在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)
R绝对是答案。我要补充一下罗布和科林已经说过的话:
为了提高您的绘图质量,您应该考虑使用的开罗包的输出设备。这将大大提高最终图形的质量。您只需在绘制之前调用该函数,然后它将重定向到开罗作为输出设备。
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
如果你有长时间运行计算。
我最喜欢的工具是带有mathplotlib的 Python
优点:
具体来说,对于svg和eps等不同的文件格式,请使用savefig的format参数
示例: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')
看一下三个流行的可视化库的样本库:
对于前两个,您甚至可以查看相关的源代码-简单的东西很简单,代码行不多。预熔案例将具有必需的Java样板代码。所有这三个都支持许多后端/设备/渲染器(pdf,ps,png等)。这三者显然都具有高质量的图形能力。
我认为这可以归结为您最喜欢使用哪种语言。
另一个选择是Gnuplot