4

Hadley の Web サイトの例を使用すると、次のようになります。

> (m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T))

作成するもの:

例図

私の質問:プロット オブジェクトを作成した後、目盛りが何をマークするかを判断することは可能ですか? (最初に自動生成されたブレークポイントを削除したい)

背景: 上記のプロットでは、x 軸のブレークが 2 から 9 にあることがはっきりとわかります。これを手動で取得するには、次を使用します。

m + scale_x_continuous( breaks = c(2:9) )

しかし、図から目盛りが何であるかを判断して、それらの一部を削除できるようにしたいと思います。言い換えれば、目盛りを返す関数はありますか:

myBreaks <- tickMarks(m)

後で呼び出すことができるように:

m + scale_x_continuous( breaks = myBreaks[-1] )

ここで、配列から最初のブレークを削除しました。

4

1 に答える 1

3

これがあなたが望むものかどうかはわかりませんが、次の方法でハックできます。

# drop first break
sx <- scale_x_continuous()
sx$.tr$input_breaks <- function(., range) grid.pretty(range)[-1]
m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T)
m + sx

# reduce the breaks into half
sx$.tr$input_breaks <- function(., range) {
  r <- grid.pretty(range); r[seq_len(length(r)/2)*2]
}
m + sx

# set the (rough) number of breaks  
sx$.tr$input_breaks <- function(., range) pretty(range, 3)
m + sx

ただし、これはy軸にも影響することに注意してください...

おそらく、独自の変換オブジェクトを作成する簡単な方法です。

TransIdentity2 <- Trans$new("identity2", "force", "force", "force")
TransIdentity2$input_breaks <- function(., range) pretty(range, 3)

m + scale_x_continuous(trans="identity2")

この場合、y 軸には影響しません。

于 2011-06-28T06:20:42.960 に答える