Possiamo presumere che abbiamo un file CSV e vogliamo un diagramma a linee molto semplice con diverse linee su un diagramma e una semplice legenda.
Possiamo presumere che abbiamo un file CSV e vogliamo un diagramma a linee molto semplice con diverse linee su un diagramma e una semplice legenda.
Risposte:
Il modo più semplice è usare R
Utilizzare read.csv
per inserire i dati in R, quindi utilizzare una combinazione dei comandi plot
eline
Se vuoi qualcosa di veramente speciale, dai un'occhiata alle librerie ggplot2 o reticolo .
Nei ggplot2
seguenti comandi dovrebbe iniziare.
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)
Questo ti darebbe la seguente trama:
Trama lineare http://img84.imageshack.us/img84/6393/tmpq.jpg
Salvataggio di grafici in R
Il salvataggio dei grafici in R è semplice:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()
Invece di jpeg
puoi anche salvare come pdf
file o 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)
È difficile superare R per la grafica. Puoi fare quello che vuoi in 3 righe. Ad esempio, supponendo che il file CSV abbia quattro colonne:
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 è sicuramente la risposta. Vorrei solo aggiungere ciò che Rob e Colin hanno già detto:
Per migliorare la qualità dei tuoi grafici, dovresti prendere in considerazione l'utilizzo del pacchetto Cairo per il dispositivo di output. Ciò migliorerà notevolmente la qualità della grafica finale. È sufficiente chiamare la funzione prima di tracciare e reindirizza al Cairo come dispositivo di 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
Infine, in termini di metterlo in una pubblicazione, questo è il ruolo che Sweave
gioca. Rende la combinazione di grafici con la tua carta un'operazione banale (e ha l'ulteriore vantaggio di lasciarti con qualcosa di riproducibile e comprensibile). Utilizzare cacheSweave
se si dispone di calcoli di lunga durata.
Il mio strumento preferito è Python con mathplotlib
I vantaggi:
In particolare, per diversi formati di file come svg ed eps, utilizzare il parametro format di savefig
Un esempio: input.csv
"Linea 1", 0,5,0,8,1,0,0,9,0,9 "Riga 2", 0.2,0.7,1.2,1.1,1.1
Codice:
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')
Dai un'occhiata alle gallerie di esempio per tre librerie di visualizzazione popolari:
Per i primi due, puoi persino visualizzare il codice sorgente associato: le cose semplici sono semplici, non molte righe di codice. Il caso prefuse avrà il codice di caldaiaplate Java richiesto. Tutti e tre supportano una serie di backend / dispositivi / renderer (pdf, ps, png, ecc.). Tutti e tre sono chiaramente in grado di offrire grafica di alta qualità.
Penso che praticamente si riduca a quale lingua ti trovi più a tuo agio nel lavorare. Vai con quello.
Un'altra opzione è Gnuplot
Facile è relativo. Nessuno strumento è facile fino a quando non sai come usarlo. All'inizio alcuni strumenti possono sembrare più difficili, ma ti offrono un controllo molto più preciso una volta acquisiti il controllo.
Di recente ho iniziato a creare i miei grafici in pgfplots . Essendo un pacchetto LaTeX (sopra tikz
), è particolarmente bravo a rendere le cose belle. I caratteri saranno coerenti con il resto del documento ed è molto più facile integrare visivamente le trame. Non è l'opzione più semplice per creare grafici, ma è un modo piuttosto semplice per creare grafici di qualità pubblicitaria.