2017-05-04 7 views
0

x10スケールのレベルプロットをlog10ティックで描画したいと思います。R:ログティックスケールでレベルプロットを描く方法

たとえば、私はこのような通常のレベルのプロットを持っています。

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 
filled.contour(x, y, volcano, color = terrain.colors, plot.title = title(main = "Volcano topolgy", xlab = "Meters North", ylab = "Meters West"), plot.axes = { axis(1, seq(100, 800, by = 100)); axis(2, seq(100, 600, by = 100)) }, key.title = title(main = "Height\n(meters)"), key.axes = axis(4, seq(90, 190, by = 10))) 

enter image description here

しかし、xとyのスケールは、目盛りスケールをログに記録されていません。私は、ログティックスケール機能を持​​つ他のライブラリ "latticeExtra"を見つけました。例えば、上記と同じxとyを使用すると、ログティックを描くことができますが、輪郭データを埋めることはできません。

library(lattice) 
library(latticeExtra) 
xyplot(y ~ x, scales = list(x = list(log = 10), y = list(log = 10)), xscale.components = xscale.components.log10ticks, yscale.components = yscale.components.log10ticks) 

enter image description here

どのように私は、ログティックスケールとレベルのプロットを描くことができますか?私は、後でログの場所として散布図をレベルプロットにプロットしたいと思います。

ありがとうございます。

答えて

1

latticelatticeExtra

library(lattice) 
library(latticeExtra) 

xx <- 1:nrow(volcano) 
yy <- 1:ncol(volcano) 

levelplot(
    x = volcano, 
    xlim = range(xx), 
    ylim = range(yy), 
    scales = list(x = list(log = 10), y = list(log = 10)), 
    xscale.components = xscale.components.log10ticks, 
    yscale.components = yscale.components.log10ticks 
) 

enter image description here

を使用する代替です
1

あなたが直接xyデータをlogtransformとカスタムaxis文でそれに応じて軸を調整することができますfilled.contourを使用して維持したいが、それは非常にエレガントではない場合(base::plotlog = "xy"パラメータは悲しげにfilled.contourで何もしません) :

x <- log(10*1:nrow(volcano)) 
y <- log(10*1:ncol(volcano)) 
filled.contour(x, y, volcano, color = terrain.colors, 
       plot.title = title(main = "Volcano topolgy", 
            xlab = "Meters North", 
            ylab = "Meters West"), 
       plot.axes = { axis(1, at = log(seq(100, 800, by = 100)), labels = seq(100, 800, by = 100)); 
               axis(2, at = log(seq(100, 600, by = 100)), labels = seq(100, 600, by = 100)) }, 
       key.title = title(main = "Height\n(meters)"), 
       key.axes = axis(4, seq(90, 190, by = 10))) 

enter image description here あなたもscale_y_log10()scale_x_log10()ggplot2はあなたのために働くならば、this question and answerを見てみることができます。ここで

関連する問題