Możemy założyć, że mamy plik CSV i chcemy bardzo prostego wykresu linii z kilkoma liniami na jednym wykresie i prostej legendy.
Możemy założyć, że mamy plik CSV i chcemy bardzo prostego wykresu linii z kilkoma liniami na jednym wykresie i prostej legendy.
Odpowiedzi:
Najłatwiejszym sposobem jest użycie R.
Użyj, read.csv
aby wprowadzić dane do R, a następnie użyj kombinacji poleceń plot
iline
Jeśli chcesz coś naprawdę specjalnego, a następnie szukać w bibliotekach ggplot2 lub kraty .
W ggplot2
poniższych poleceniach powinieneś zacząć.
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)
To dałoby ci następujący wątek:
Wykres liniowy http://img84.imageshack.us/img84/6393/tmpq.jpg
Zapisywanie wykresów w R.
Zapisywanie wykresów w R jest proste:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()
Zamiast nich jpeg
możesz również zapisać jako plik pdf
lub 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)
Grafika jest trudna do przejścia poza R. Możesz zrobić, co chcesz w 3 liniach. Na przykład zakładając, że plik csv ma cztery kolumny:
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 jest zdecydowanie odpowiedzią. Chciałbym tylko dodać do tego, co już powiedzieli Rob i Colin:
Aby poprawić jakość swoich działek, należy rozważyć użycie w Cairo pakiet dla urządzenia wyjściowego. To znacznie poprawi jakość końcowej grafiki. Po prostu wywołujesz funkcję przed wydrukowaniem, a przekierowuje ona do Kairu jako urządzenia wyjściowego.
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
Wreszcie, jeśli chodzi o umieszczenie go w publikacji, to jest rola, którą Sweave
odgrywa. To sprawia, że łączenie wykresów z papierem jest banalną operacją (i ma tę dodatkową zaletę, że pozostawia cię z czymś, co jest powtarzalne i zrozumiałe). Użyj, cacheSweave
jeśli masz długotrwałe obliczenia.
Moje ulubione narzędzie to Python z mathplotlib
Zalety:
W szczególności w przypadku różnych formatów plików, takich jak svg i eps, użyj parametru formatu savefig
Przykład: input.csv
„Linia 1”, 0,5,0,8,1,0,0,09,0 „Linia 2”, 0,2,0,7,7,1,2,1,1,1,1
Kod:
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')
Spójrz na przykładowe galerie dla trzech popularnych bibliotek wizualizacji:
W przypadku pierwszych dwóch możesz nawet wyświetlić powiązany kod źródłowy - proste rzeczy są proste, niewiele wierszy kodu. Przypadek prefuse będzie miał wymagany kod wzorcowy Java. Wszystkie trzy obsługują wiele backendów / urządzeń / rendererów (pdf, ps, png itp.). Wszystkie trzy mają wyraźnie wysoką jakość grafiki.
Myślę, że sprowadza się to do tego, w którym języku najlepiej czujesz się w pracy. Idź z tym.
Inną opcją jest Gnuplot
Łatwe jest względne. Żadne narzędzie nie jest łatwe, dopóki nie wiesz, jak go używać. Niektóre narzędzia mogą początkowo wydawać się trudniejsze, ale po opanowaniu zapewniają znacznie bardziej szczegółową kontrolę.
Ostatnio zacząłem tworzyć moje wykresy w pgfplots . Będąc pakietem LaTeX (na górze tikz
), jest szczególnie dobry w poprawianiu wyglądu. Czcionki będą spójne z resztą dokumentu i znacznie łatwiej zintegrować swoje wykresy wizualnie. Nie jest to najłatwiejsza opcja tworzenia wykresów, ale jest to dość łatwy sposób na tworzenie wykresów, które z pewnością mają jakość publikacji.