Podemos assumir que temos um arquivo CSV e queremos um gráfico de linhas muito básico com várias linhas em um gráfico e uma legenda simples.
Podemos assumir que temos um arquivo CSV e queremos um gráfico de linhas muito básico com várias linhas em um gráfico e uma legenda simples.
Respostas:
A maneira mais fácil é usar o R
Use read.csv
para inserir os dados em R e, em seguida, use uma combinação dos comandos plot
eline
Se você quiser algo realmente especial, consulte as bibliotecas ggplot2 ou lattice .
Nos ggplot2
seguintes comandos, você deve começar.
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)
Isso daria o seguinte gráfico:
Gráfico de linha http://img84.imageshack.us/img84/6393/tmpq.jpg
Salvando parcelas em R
Salvar gráficos em R é simples:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()
Em vez de jpeg
você também pode salvar como um pdf
arquivo ou 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)
É difícil passar do R para gráficos. Você pode fazer o que quiser em 3 linhas. Por exemplo, supondo que o arquivo csv tenha quatro colunas:
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 é definitivamente a resposta. Gostaria apenas de acrescentar ao que Rob e Colin já disseram:
Para melhorar a qualidade de seus gráficos, considere usar o pacote Cairo para o dispositivo de saída. Isso melhorará muito a qualidade dos gráficos finais. Você simplesmente chama a função antes de plotar e ela redireciona para o Cairo como o dispositivo de saída.
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
Por fim, em termos de publicação em uma publicação, esse é o papel que Sweave
desempenha. Isso torna a combinação de gráficos com o seu papel uma operação trivial (e tem o benefício adicional de deixar você com algo que seja reproduzível e compreensível). Use cacheSweave
se você tiver cálculos de longa duração.
Minha ferramenta favorita é Python com mathplotlib
As vantagens:
Especificamente, para diferentes formatos de arquivo, como svg e eps, use o parâmetro format de savefig
Um exemplo: input.csv
"Linha 1", 0,5,0,8,1,0,0,9,0,9 "Linha 2", 0.2,0.7,1.2,1.1,1.1
Código:
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')
Dê uma olhada nas galerias de amostra para três bibliotecas de visualização populares:
Nos dois primeiros, você pode até visualizar o código-fonte associado - o simples é simples, não há muitas linhas de código. O caso do prefuse terá o código padrão do Java necessário. Todos os três suportam vários back-ends / dispositivos / renderizadores (pdf, ps, png, etc). Todos os três são claramente capazes de gráficos de alta qualidade.
Eu acho que tudo se resume a qual idioma você está mais confortável trabalhando. Vá com isso.
Outra opção é o Gnuplot
Fácil é relativo. Nenhuma ferramenta é fácil até você saber como usá-la. Algumas ferramentas podem parecer mais difíceis no começo, mas fornecem um controle muito mais refinado depois que você as domina.
Recentemente, comecei a fazer minhas plotagens em pgfplots . Sendo um pacote LaTeX (em cima tikz
), é particularmente bom em fazer as coisas parecerem boas. As fontes serão consistentes com o restante do documento e é muito mais fácil integrar seus gráficos visualmente. Não é a opção mais fácil de criar gráficos, mas é uma maneira bastante fácil de criar gráficos com qualidade de publicação.