7

R (Ver 3.0.2) で ggplot2 (Ver 0.9.3.1) を使用して、対数プロットに 3 つの関数をプロットしたいと考えています。

y = x
y = 0.5*x
y = 1.5*x

私は多くのことを試しましたが、問題が発生し続けています。これには、ここでスタックオーバーフローの質問を読むことが含まれます。

私が欲しいものの例はここにあります。そのプロットをMatlabで生成しました。

以下は私が作業しているコードのサンプルですが、現在は何も乾かしていません。最終的には、他のデータ (構造を示すにはログログが必要) の上にあるレイヤーになりたいと考えています。

library(ggplot2)

plot = ggplot()
plot = plot + coord_cartesian(xlim = c(0.02, 300), ylim = c(0.035, 20))
plot = plot + stat_function(data = data.frame(x=c(0,1000), y=c(0,1)), fun=function(x) {x}, aes(x,y), geom = "line", color = "blue")
plot = plot + stat_function(data = data.frame(x=c(0,1000), y=c(0,1)), fun=function(x) {0.5*x}, aes(x,y), geom = "line", color = "red")
plot = plot + stat_function(data = data.frame(x=c(0,1000), y=c(0,1)), fun=function(x) {1.5*x}, aes(x,y), geom = "line", color = "red")
plot = plot + scale_x_log10() + scale_y_log10() + annotation_logticks()
plot  
4

1 に答える 1

11

coord_transの代わりに使用できますscale_.._log10coord_cartesian

のようなもの(からの例を使用して、annotation_logticks適切にラベル付けされたブレークを取得します)

ggplot(data =  data.frame(x=c(0.0001,1000), y=c(0.001,1)), aes(x=x,y=y)) +
   stat_function(fun = function(x) x, geom='line',colour ='blue') +
   stat_function(fun = function(x) 0.5*x, geom='line',colour = 'red') +
   stat_function(fun = function(x) 1.5 * x , geom = 'line', colour = 'red') +
   coord_trans(xtrans = 'log10',ytrans = 'log10', limx = c(0.02,300), limy =c(0.035,20)) +
  annotation_logticks(scaled=FALSE) +
   scale_x_continuous(breaks = trans_breaks("log10", function(x) 10^x),
                labels = trans_format("log10", math_format(10^.x))) +
  scale_y_continuous(breaks = trans_breaks("log10", function(x) 10^x),
                     labels = trans_format("log10", math_format(10^.x)))

ここに画像の説明を入力

?annotation_logticksこの問題への多くのアプローチを提供することに注意してください

于 2013-10-08T04:07:38.737 に答える