Tufteの軸を達成するためのRプロットの境界線の削除


18

次のグラフを検討してください。

x <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100)+100

par(mar=c(5,5,5,5))

plot(x,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-8,2),ylab="")
axis(side=2, at=c(-2,0,2))
mtext("red line", side = 2, line=2.5, at=0)

par(new=T)
plot(x,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(98,108), ylab="")
axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
mtext("blue line", side=4, line=2.5, at=100)

Tufteのスタイルを実現するために、自動生成された境界線を削除し、軸線のみを保持するにはどうすればよいですか?


5
bty引数を見てください(?par例:)bty="n"。の呼び出しでこの引数を渡すことができますplot
Glen_b

3
FWIW、Tufteはさらに進んだ:場合によっては、軸の一部を消去すること自体が追加情報を提供し、各軸をデータ範囲の視覚表示に効果的に変える方法を示しました。これにインスパイアされて、1989年に(TufteとBill Clevelandのグループに触発された他の多くのデザインの中でも)このデザインを組み込んだ小さな複数のプロットを作成するソフトウェアを作成しました。大量のデータを視覚的にマイニングする必要がある場合、このような原則は実際に機能します。
whuber

@whuber事実上、軸を一種のラグプロットに置き換えましたか?
シルバーフィッシュ

2
@Silverラグプロットの描画は別の問題です。私もそれを行いました。ただし、ラグプロットがない場合でも、各軸の描画を停止および開始する場所を選択できます。最小で開始し、最大で停止すると、各限界データ分布の全範囲を視覚的に表現できます。
whuber

2
@whuberありがとう、私はあなたが何を言っていたかを理解しました-Tufteはこれを「範囲フレーム」と呼びます(そして極値で行を止めるだけでなく、値を示すために最終ラベルを使用することを提案します「範囲ラベル付きの範囲フレーム」を呼び出します)。参照が必要な後の読者のために、これは定量的情報の視覚表示、第7章(「多機能グラフィック要素」)からのものです。これは非常によく見られるスレッドなので、「Tufteの軸」が実際に何を意味するのかを示すイラスト(および、Rのコードを含む質問)を追加するとよいでしょう。
シルバーフィッシュ

回答:


21

bty="n"両方のプロットコマンドを追加します。

時系列の場合frame.plot=FALSE、同じ効果を追加します。

より手の込んだTufte軸については、http: //www.cl.cam.ac.uk/~sjm217/projects/graphics/を参照してください。


5

これは簡単ですaxes=FALSE。引数を含めるだけです。考慮してください:

x  <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100) + 100

windows()
  par(mar=c(5,5,5,5))
  plot(x, y1, pch=0, type="b", col="red", yaxt="n", ylim=c(-8,2), ylab="", axes=F)
  axis(side=2, at=c(-2,0,2))
  mtext("red line", side = 2, line=2.5, at=0)

  par(new=T)
  plot(x, y2, pch=1, type="b", col="blue", yaxt="n", ylim=c(98,108), ylab="", axes=F)
  axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
  mtext("blue line", side=4, line=2.5, at=100)

ここに画像の説明を入力してください

これはヒストグラムでも同様に機能することに注意してください。

windows()
hist(y1, axes=F)

ここに画像の説明を入力してください


4

使用する場合

par(bty = 'n') 

動物園のためにそれを修正するプロットを呼び出す前に。また、プロットコマンドに渡すことができないさまざまな状況で修正される可能性があります。

(プロットの他の種類のフレームについては、par()ヘルプのbtyオプションを確認してください)


0

Tufteを参照せずに、プロットの境界線を削除するというより一般的な質問に答えています。

ヒストグラムの場合、btn = 'n'が境界線を取り除くことはできませんでした。

ヒストグラムで機能し、すべてのタイプのプロットで機能するソリューションは、境界線のタイプを非表示に設定することです:lty = "blank"

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