Який найпростіший спосіб створити графіки якості публікацій під Linux?


17

Ми можемо припустити, що у нас є файл CSV, і ми хочемо дуже базовий графік рядка з декількома рядками на одному сюжеті та простою легендою.


2
Як ви визначаєте "якість публікації"? Будь ласка, докладно поясніть, які аспекти ви хочете бачити вкритих ... наприклад використання кольорів, ширини рядків тощо. Чи слід замість відповіді орієнтуватися на розмір шрифту?
Egon Willighagen

Відповіді:


14

Найпростіший спосіб - використовувати 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 просто:

#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()

Як щодо збереження у файлі?
Łukasz Lew

1
Або трохи більш лаконічно з розплавом і qplot:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
hadley

Насправді, ще простішим способом є використання R + вивідника з ggplot2 (з'явиться новий випуск цього, який вийде найближчими місяцями. Бета-версія наразі доступна)
Тал Галілі

4
Хороший приклад, але сюжет навряд чи якість публікації. Або принаймні жоден журнал, в якому я публікую, не прийняв би це.
Матті Пастель

3
"Навряд чи якість публікації" ???? Я усвідомлюю, що це не ідеально - фраза "... якщо ти розпочнеш .." охоплює цей біт. Але з невеликою додатковою роботою, тобто етикетками на осі, я б сказав, що це добре. До речі, в яких журналах ви публікуєте?
csgillespie

13

Важко пройти повз 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)

Як щодо публікації цього?
Łukasz Lew

5
R створює деякі найкращі якості графіки навколо. Як редактор міжнародного науково-дослідного журналу, я хотів би, щоб усі наші автори використовували Р.
Роб Хайндман

1
.. див. мій коментар до питання ... як ви визначаєте "якість публікації" чи "найкращу якість" ... з точки зору редактора?
Egon Willighagen

19
Мені подобається бачити векторну графіку (без jpegs), графічний дизайн за принципами Tufte & Cleveland, читабельні шрифти, невтрамовані легенди, відсутність затінених фонів, чутливі межі осей та інтервали галочок, мічені осі, відсутність накладання тексту та накреслення символів чи рядків і т. д. Більшість авторів використовують налаштування програмного забезпечення за замовчуванням, тому гарне програмне забезпечення має хороші параметри за замовчуванням. Ось тут Excel жалібно виходить з ладу, а R робить дуже добре. Але можна отримати паршиві графіки в R та хороші графіки в Excel. Просто простіше створити високоякісну графіку в Р.
Роб Хайндман

12

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якщо у вас є тривалі обчислення.


2
Можливо, краще, ніж використовувати Каїр для створення растрових зображень, - це збереження графіків як векторів, які не залежать від роздільної здатності, тому краще виглядайте під час зміни розміру, і завжди підходить роздільна здатність друку - мені подобається svg, який легко можна редагувати за допомогою inkscape .
naught101

10

Мій улюблений інструмент - Python з mathplotlib

Переваги:

  • Негайний експорт із середовища, в якому я роблю свої експерименти
  • Підтримка структур даних scipy / numpy
  • Знайомий синтаксис / параметри (фон matlab)
  • Повна підтримка латексу для міток / легенд тощо. Настільки ж набір тексту, як і в решті документа!

Зокрема, для різних форматів файлів, таких як svg та eps, використовуйте параметр формату 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')

Чи можете ви поставити фрагмент коду для повноти? Було б дуже корисно для людей, які в майбутньому знайдуть цю сторінку.
Łukasz Lew

@ Łukasz Хм, кілька пропозицій, як завантажити фігуру svg?
Пітер Сміт

4
Ви могли сказати у своїй відповіді, що matplotlib дозволяє відображати всю типографіку в сюжеті за допомогою LaTeX, тому вона ідеально інтегрується візуально.
Бенджамін Баньє

Цікаво, чому matplotlib ще не інтегрований у R?
naught101

6

Ознайомтеся з галереями зразків для трьох популярних бібліотек візуалізації:

Для перших двох ви навіть можете переглянути пов’язаний вихідний код - простий матеріал простий, не багато рядків коду. У корпусі попереднього запобіжника буде вказаний необхідний код котла Java. Усі три підтримують ряд програм / пристроїв / рендерів (pdf, ps, png тощо). Усі три чітко здатні до високоякісної графіки.

Я думаю, що це значною мірою зводиться до того, на якій мові ви найбільше комфортно працюєте. Перейдіть з цим.



1

Легко відносно. Жоден інструмент не простий, поки ви не знаєте, як ним користуватися. Деякі інструменти спочатку можуть здатися складнішими, але надають вам набагато більш тонкий контроль, як тільки ви їх освоїте.

Нещодавно я почав робити свої сюжети в pgfplots . Будучи пакетом LaTeX (на вершині tikz), він особливо гарний у тому, щоб речі виглядали добре. Шрифти будуть відповідати решті документа, і значно простіше інтегрувати свої сюжети візуально. Це не найпростіший варіант створення сюжетів, але це досить простий спосіб зробити сюжети, які, безумовно, мають якість публікації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.