2011-08-09 53 views
10

我有一个x变量和两个y1和y2变量(总共3列)的数据集。我想将y1对x绘制为轴上方的柱状图,将y2绘制在x轴下面的同一个绘图中的同一个x上,以使两个柱状图彼此镜像。如何为R中的x轴镜像的两个变量创建条形图?

下面的图D是我想要做的一个例子。

Figure **D**

回答

14

使用ggplot你会去做如下:

设置数据。这里没有什么奇怪的,但明显的轴下的值将是负面的。

dat <- data.frame(
    group = rep(c("Above", "Below"), each=10), 
    x = rep(1:10, 2), 
    y = c(runif(10, 0, 1), runif(10, -1, 0)) 
) 

叠加使用ggplotgeom_bar。要防止geom_bar汇总数据,请指定stat="identity"。同样,需要通过指定position="identity"来禁用堆叠。

library(ggplot2) 
ggplot(dat, aes(x=x, y=y, fill=group)) + 
    geom_bar(stat="identity", position="identity") 

enter image description here

0

这与GGPLOT2完成。 首先提供一些数据,并将两个y一起融化。

library(ggplot2) 

dtfrm <- data.frame(x = 1:10, y1 = rnorm(10, 50, 10), y2 = -rnorm(10, 50, 10)) 
dtfrm.molten <- melt(dtfrm, id = "x") 

然后,使图形

ggplot(dtfrm.molten, aes(x , value, fill = variable)) + 
    geom_bar(stat = "identity", position = "identity") 

Perhpas别人可以提供具有碱和/或晶格的例子。

HTH

9

为基础的图形的一些非常小的实施例和lattice使用@ Andrie的示例性数据:

dat <- data.frame(
    group = rep(c("Above", "Below"), each=10), 
    x = rep(1:10, 2), 
    y = c(runif(10, 0, 1), runif(10, -1, 0)) 
) 

在碱图形:

plot(c(0,12),range(dat$y),type = "n") 
barplot(height = dat$y[dat$group == 'Above'],add = TRUE,axes = FALSE) 
barplot(height = dat$y[dat$group == 'Below'],add = TRUE,axes = FALSE) 

bar_base

lattice

barchart(y~x,data = dat, origin = 0, horizontal = FALSE) 

enter image description here

相关问题