文書に収まるようにプロットのサイズを変更しようとしていますが、プロットされたダイアグラムが正方形になるのが困難です。
例:
pdf(file = "./out.pdf", width = 5, height = 5)
p <- ggplot(mydata, aes(x = col1, y = col2))
print(p)
aux <- dev.off()
Xとyの制限は同じですが、結果のプロットは正方形ではありません。 Rは囲みパネルを5x5インチにするが、実際の図のサイズは気にしないと思います。
どうすればnsquashダイアグラムを作成できますか?
ggplot
で、プロットのアスペクト比を保持するメカニズムは、coord_fixed()
レイヤーをプロットに追加することです。これにより、実際の境界ボックスの形状に関係なく、プロット自体のアスペクト比が保持されます。
(結果のプロットをpdf(); print(p); dev.off()
シーケンスではなく、pdf/png/etcに保存するためにggsave
を使用することもお勧めします。)
library(ggplot2)
df <- data.frame(
x = runif(100, 0, 5),
y = runif(100, 0, 5))
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()
特定のアスペクト比を確保するには、例えば正方形の場合は、theme(aspect.ratio=1)
を使用します。
Andrieの答えは全体像を示しません。この例は、xの範囲がyの範囲に等しい不自然なデータを提供する可能性があるためです。ただし、データが次の場合:
df <- data.frame(
x = runif(100, 0, 50),
y = runif(100, 0, 5))
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()
プロットは次のようになります。
Coord_fixed()関数には、軸の比率を調整する引数もあります。
ratio
アスペクト比、y/xとして表される
次のようにプロットを正方形にすることができます。
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed(ratio=10)
ただし、変数またはプロット領域の制限でこれを調整する必要があります(すべての制限がこれらの例のように整数でうまく割り切れるわけではありません)。
完全を期すために、非常に異なる軸の制限を考慮したい場合:
df <- data.frame(
x = runif(100, 0, 5000),
y = runif(100, 0, 5))
ratio.display <- 4/3
ratio.values <- (max(df$x)-min(df$x))/(max(df$y)-min(df$y))
plot <- ggplot(df, aes(x=x, y=y)) + geom_point()
plot + coord_fixed(ratio.values / ratio.display)
その結果: