Мы можем предположить, что у нас есть файл CSV, и нам нужен очень простой линейный график с несколькими линиями на одном графике и простой легендой.
Мы можем предположить, что у нас есть файл CSV, и нам нужен очень простой линейный график с несколькими линиями на одном графике и простой легендой.
Ответы:
Самый простой способ - использовать R
Используйте read.csv
для ввода данных в R, а затем использовать комбинацию из plot
и line
команд
Если вы хотите что-то действительно особенное, то посмотрите на библиотеки ggplot2 или решетку .
В 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
's' вы также можете сохранить как pdf
файл или постскриптум:
#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
если у вас есть длительные вычисления.
Мой любимый инструмент это Python с mathplotlib
Преимущества:
В частности, для разных форматов файлов, таких как svg и eps, используйте параметр format в savefig
Пример: 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-код. Все три поддерживают несколько backends / devices / renderers (pdf, ps, png и т. Д.). Все трое явно способны на качественную графику.
Я думаю, что все сводится к тому, на каком языке вам удобнее всего работать.
Другим вариантом является Gnuplot
Легко относительно. Ни один инструмент не прост, пока вы не знаете, как его использовать. Поначалу некоторые инструменты могут показаться более сложными, но, как только вы овладеете ими, вы получите гораздо более детальный контроль.
Я недавно начал делать свои графики в pgfplots . Будучи пакетом LaTeX (сверху tikz
), он особенно хорош для того, чтобы все выглядело хорошо. Шрифты будут соответствовать остальной части документа, и визуально интегрировать ваши графики будет намного проще. Это не самый простой способ создания графиков, но это довольно простой способ создания графиков, которые безусловно имеют качество публикации.