0

@Ricardo Saportaは、ベースグラフィックとggplotグラフィックを複数のプロット図に組み合わせる簡単な方法をここで提案しました。

この方法を使用して、左側にベースグラフィックをプロットし、右側に実際に2つのグラフィックを含むggplotグラフィックをプロットします(これは人工的な例であり、実際の例ではありませんが、実際の例と同じ構造です):

library(ggplot2)
library(gridExtra)
library(plotrix)

Mvalues <- matrix(rpois(9,1), ncol=3)
Mcolors <- matrix(rpois(9,5), ncol=3)

par(mfrow=c(1,2))
color2D.matplot(x=Mvalues, show.values=2, cellcolors=Mcolors, 
    xlab="x", ylab="y", axes=FALSE, vcex=0.4)
gg2 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge") 
ta <- do.call(arrangeGrob, list(gg2,gg2))
vp.Left <- viewport(height=unit(1, "npc"), width=unit(0.5, "npc"), 
    just="left", y=0.5, x=0.5)
print(ta, vp=vp.Left)

プロット

非常に素晴らしい。しかし、今度はベースグラフィックの幅をggplotグラフィックよりも大きくしたいと思います。実行する方法 ?関数を使用してこれを実行しようとしましたが失敗しましたlayout()

4

1 に答える 1

4

どうぞ:

幅の異なるレイアウトを使用してください。最初の列を列2の幅の2倍に定義する方法に注目してください。

layout(matrix(c(1, 2, 1, 3), ncol=2, byrow=TRUE), widths=c(2, 1))

グラフィックを設定する

layout(matrix(c(1, 2, 1, 3), ncol=2, byrow=TRUE), widths=c(2, 1))
color2D.matplot(x=Mvalues, show.values=2, cellcolors=Mcolors, 
                                xlab="x", ylab="y", axes=FALSE, vcex=0.4)
gg2 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge") 
ta <- do.call(arrangeGrob, list(gg2,gg2))

次に、ビューポートを定義します。あなたのコードはほとんどそこにありました。右揃えになるように変更し、幅を33%に変更しました。

vp <- viewport(height=unit(1, "npc"), width=unit(0.33, "npc"), 
               just="right", x=1, y=0.5)

最後に、残りのグラフィックを印刷します。

print(ta, vp=vp)

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

于 2013-01-16T12:42:57.520 に答える