【问题标题】:Multiple plot in the same figure同一图中的多个绘图
【发布时间】:2014-02-21 17:02:54
【问题描述】:

我有几个数据,我需要将它们紧凑地绘制成这样的图片:

我已经尝试过par()layout()ggplot(),但是到目前为止,绘图相互显示。 我需要它们非常接近,就好像它们在同一个情节中但 y 不同(例如 plot1 y=0, plot2 y=1, plot3 y=3 等等..)

有人可以帮我吗?

【问题讨论】:

  • 你能告诉我这张照片是不是你在说的吗?它已添加到建议的编辑中,但我在您的消息中找不到任何痕迹。
  • 是的,我需要一系列像这样的情节

标签: r plot


【解决方案1】:

这也可以使用布局来获取,但也许更简单的方法是以合适的方式设置图形参数。

函数par() 让您使用参数mfrow 指定单个图中的面板数。它需要一个由两个数字组成的向量,它们指定数字子图的行和列。例如,c(2,1) 将创建两行图,但只有一列。这就是您的示例图中的内容。您可以将图形行数更改为要垂直绘制的子图形数。

此外,可以使用参数mar 设置每个子图周围的边距。边距按 1. 底部、2. 左侧、3. 顶部和 4. 右侧的顺序指定。使底部和顶部边距更小会使您的子图更靠近。

在 R 中,这可能类似于以下内容:

# Simulate some random data
a<-runif(10000)
b<-runif(10000)

# Open a new plot windows
# width: 7 inches, height: 2 inches
x11(width=7, height=1)

# Specify the number of sub-figures
# Specify the margins (top and bottom are 0.1, left and right are 2)
# Needs some experimenting with to get these right
par(mfrow=c(2,1), mar=c(0.1,2,0.1,2))

# Plot the figures
barplot(a)
barplot(b)

生成的图形应该大致如下:

【讨论】:

    【解决方案2】:

    这里是使用facet_gridggplot版本:

    df <- data.frame(a=runif(3e3), b=rep(letters[1:3], 1e3), c=rep(1:1e3, 3))
    ggplot(df, aes(y=a, x=c)) + geom_bar(stat="identity") + facet_grid(b ~ .)
    

    【讨论】:

    • @mirkuz,很高兴这有帮助。如果任一答案满足您的需求,请选中其中一个作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多