簡體   English   中英

使用因子變量在R中的散點圖旁邊划分直方圖

[英]Using Factor Variables to Facet a Histogram Beside a Scatter Plot in R

是否可以使用因子變量在R中的ggplot2中的散點圖下方或旁邊刻划直方圖(以使直方圖是數據的x和y分量)?

我問是否可以使用因子變量來完成此操作的原因是,分面似乎比解決此問題的可用軟件包更普遍,例如在使用分面時,可以打開或關閉分面標簽,並且分面具有可能需要關注出版物的更標准外觀。 (默認情況下,也將保留相同的軸使用)。

到目前為止,我還無法使它起作用,因為似乎所有分面數據都必須具有相同數量的維度(例如,散點圖數據為2D,直方圖數據為1D)。

我不確定我是否完全理解這個問題,因為因子變量的直方圖對我而言意義不大。 另外,如果沒有樣本數據,我將只需要使用mtcars 這樣的事情可能會有所幫助。 我用grid.extra除了ggplot2為了使該地塊有一個自定義網格排列。

library(gridExtra)
library(ggplot2)


s_plot <- ggplot(data = mtcars, aes(x = hp, y = mpg)) + geom_point()

h1 <- ggplot(data = mtcars, aes(x = hp)) + geom_histogram()

h2 <- ggplot(data = mtcars, aes(x = mpg)) + geom_histogram()

grid.arrange(s_plot, h1, h2, layout_matrix = cbind(c(1, 1), c(2, 3)))

在此處輸入圖片說明

需要注意的是,在layout_matrix的說法grid.arrange ,我用cbind(c(1,1), c(2, 3))因為我想第一個情節是全部由自己一列,然后我想其他兩個繪制以占據網格第二列中的各個行。

考慮使用geom_rug

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() + geom_rug()

在此處輸入圖片說明

尼克和布萊恩,

感謝您對代碼的幫助。 我四處詢問,並能夠獲得我想要的設置。 基本上是這樣,如下所示。 (希望這可能對您和其他人將來有用,因為我認為這是一種常見的圖形類型):

rm(list = ls())
library(ggplot2)
library(gridExtra)

df <- data.frame(
  x = rnorm(100),
  y = rnorm(100)
)

xrange <- range(pretty(df$x))
yrange <- range(pretty(df$y))

p.left <- ggplot(df, aes(y)) +
  geom_histogram() +
  lims(x = yrange) +
  coord_flip() +
  theme_light() +
  theme(
    axis.title.x = element_blank(),
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank(),
    panel.grid.major.x = element_blank(),
    plot.margin = unit(c(1, 0.05, 0.05, 1), "lines")
  )

p.blank <- ggplot() +
  theme_void() +
  theme(plot.margin = unit(rep(0, 4), "lines"))

p.main <- ggplot(df, aes(x, y)) +
  geom_point() +
  lims(x = xrange, y = yrange) +
  theme_light() +
  theme(
    axis.title = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    plot.margin = unit(c(1, 1, 0.05, 0.05), "lines")
  )

p.bottom <- ggplot(df, aes(x)) +
  geom_histogram() +
  lims(x = xrange) +
  theme_light() +
  theme(
    axis.title.y = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    panel.grid.major.y = element_blank(),
    plot.margin = unit(c(0.05, 1, 1, 0.05), "lines")
  )

lm <- matrix(1:4, nrow = 2)

grid.arrange(
  p.left, p.blank, p.main, p.bottom,
  layout_matrix = lm,
  widths = c(1, 5),
  heights = c(5, 1),
  padding = unit(0.1, "line")
)

具有數據x和y分量直方圖的散點圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM