Linuxで出版品質のプロットを作成する最も簡単な方法は何ですか?


17

CSVファイルがあり、1つのプロットに複数のラインがあり、簡単な凡例がある非常に基本的なラインプロットが必要であると仮定できます。


2
「出版品質」をどのように定義しますか?色の使用、線幅など、どのような側面をカバーしたいのかを詳しく説明してください。代わりに、フォントサイズに焦点を当てる必要がありますか?
エゴン・ウィルヘイゲン

回答:


14

最も簡単な方法は、Rを使用することです

を使用read.csvしてデータをRに入力してからplotlineコマンドとコマンドを組み合わせて使用​​します

本当に特別なものが必要な場合は、ライブラリ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()

の代わりにjpegpdfまたは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()

ファイルに保存するのはどうですか?
ルカシュルー

1
または、メルトとqplotを使用してもう少し簡潔に:m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
ハドリー

実際には、さらに簡単な方法は、ggplot2でR + deducerを使用することです(今後数か月以内にリリースされる新しいリリースがあります。ベータ版が現在利用可能です)
Tal Galili

4
良い例ですが、プロットはほとんど出版品質ではありません。または、少なくとも私が出版しているジャーナルはそれを受け入れません。
マティパステル

3
「ほとんど出版品質」???? 私はそれが完璧ではないことを認識しています-「...あなたはあなたを始めさせてください。」というフレーズがそのビットをカバーしています。しかし、少し追加の作業、つまり軸ラベルがあれば、それでいいと思います。ところで、あなたはどのジャーナルで出版していますか?
csgillespie

13

グラフィックスでRを超えることは困難です。あなたは3行でやりたいことができます。たとえば、csvファイルに4つの列があると仮定します。

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)

出版物に入れてみてはどうですか?
ルカシュルー

5
Rは、最高品質のグラフィックを作成します。国際的な研究誌の編集者として、私はR.使用するようにすべての私達の著者を大好きだ
ロブHyndman

1
..質問に関する私のコメントを参照してください...どのように「出版品質」または「最高品質」を定義しますか...編集者の観点から?
エゴン・ウィルヘイゲン

19
ベクターグラフィックス(jpegなし)、Tufte&Clevelandの原則に従ったグラフィックデザイン、読みやすいフォント、整理された凡例、影付きの背景、実用的な軸の制限と目盛り間隔、ラベル付き軸、テキストとプロット文字または線のオーバーラップなし、など。ほとんどの作成者はソフトウェアのデフォルト設定を使用するため、優れたソフトウェアには優れたデフォルトがあります。これは、Excelがひどく失敗し、Rが非常にうまく機能する場所です。ただし、Rではお粗末なグラフを作成し、Excelでは適切なグラフを作成することができます。それはR.で、高品質のグラフィックスを生成するだけで簡単です
ロブHyndman

12

Rは間違いなく答えです。ロブとコリンがすでに言ったことに付け加えます。

あなたのプロットの品質を向上させるために、あなたが使用することを検討すべきであるカイロのパッケージを出力デバイスのために。これにより、最終的なグラフィックの品質が大幅に向上します。プロットする前に関数を呼び出すだけで、出力デバイスとしてCairoにリダイレクトされます。

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
Cairoを使用してビットマップイメージを生成するよりもおそらく、グラフを解像度に依存しないベクトルとして保存することをお勧めします。
naught101

10

私のお気に入りのツールはmathplotlibを使用したPython です

利点:

  • 実験を行う環境からの即時エクスポート
  • scipy / numpyデータ構造のサポート
  • 使い慣れた構文/オプション(MATLABの背景)
  • ラベル/凡例などの完全なラテックスサポート。ドキュメントの残りの部分と同じ組版です。

具体的には、svgやepsなどのさまざまなファイル形式の場合、savefigの formatパラメーターを使用します

例: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うーん、SVGフィギュアをアップロードする方法の提案はありますか?
ピータースミット

4
あなたは答えで、matplotlibはLaTeXでプロット内のすべてのタイポグラフィをレンダリングできるので、視覚的に完全に統合できると言及できたでしょう。
ベンジャミンバニエ

matplotlibがまだRに統合されていないのはなぜですか?
naught101

6

3つの一般的な視覚化ライブラリのサンプルギャラリーをご覧ください。

最初の2つについては、関連するソースコードを表示することもできます。単純なものは単純であり、多くのコード行はありません。プリヒューズケースには、必要なJavaボイラープレートコードが含まれます。3つすべてが多数のバックエンド/デバイス/レンダラー(pdf、ps、pngなど)をサポートします。3つすべてが明らかに高品質のグラフィックスに対応しています。

どの言語で最も快適に作業できるのか、それはかなり要約されていると思います。



1

簡単は相対的です。使い方を知るまで簡単なツールはありません。一部のツールは、最初はより難しく見えるかもしれませんが、一度マスターすれば、よりきめ細かい制御が可能になります。

私は最近、pgfplotsでプロットを作成し始めました。LaTeXパッケージ(上tikz)であるため、見栄えを良くするのに特に優れています。フォントはドキュメントの残りの部分と一貫性があり、視覚的にプロットを統合するのがはるかに簡単です。プロットを作成するのが最も簡単なオプションではありませんが、確かに出版品質のプロットを作成するかなり簡単な方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.