r - ggplot 中的条形图,每组条数不同

标签 r ggplot2

我的数据集是这样的:

`DSET<-data.frame(cbind(c(rep("V1",3),rep("V2",3),"V3"),
                       c(rep(c("X1","X2","X3"),2),"X1"),
                       c(rep(1,7))))`    
`names(DSET)<-c("A","B","C")`    
`DSET[,3]<-c(1,-2,1,3,-1,2,-3)` 

具有三个分组变量(V1、V2、V3)和每个组三个变量(X1、X2、X3)。问题是第 3 组 (V3) 只有一个变量 (X1),但缺少另外两个变量。现在,如果我想制作一个条形图,尽管第 3 组的条形图比第 1 组和第 2 组的条形图大三倍,但一切正常。

`Grph<-ggplot(DSET,aes(x=A,y=C,fill=B))`    
`dodge <- position_dodge(width=0.9)`    
`Grph+geom_bar(position=dodge)` 

我尝试为 X2 和 X3 添加缺少组的两行和值 0,并且它有些工作。

`DSET<-data.frame(cbind(c(rep("V1",3),rep("V2",3),rep("V3",3)),
                       c(rep(c("X1","X2","X3"),3)),c(rep(1,9))))`    
`names(DSET)<-c("A","B","C")`    
`DSET[,3]<-c(1,-2,1,3,-1,2,-3,0,0)` 

`Grph<- ggplot(DSET,aes(x=A,y=C,fill=B))`    
`dodge <- position_dodge(width=0.9)`    
`Grph+geom_bar(position=dodge)` 

但我真正想要实现的是通过保持条形宽度不变,根据每个组具有的条形数量调整组大小的图。有什么办法吗?

期待您的帮助!

最佳答案

如果我对您的问题理解正确,您希望分配给“V3”的空间量小于分配给“V1”和“V2”的空间量,因为“V3”中只有一个“X”,并且您希望代表“X”的每个条的宽度相同吗?如果是这样,您可以使用分面来获得它,但不能使用简单的 x 比例尺。

首先,创建两个数据框(并给它们不同的名称)的更简单方法:

DSET <- data.frame(A=c(rep("V1",3),rep("V2",3),"V3"),
                   B=c(rep(c("X1","X2","X3"),2),"X1"),
                   C=c(1,-2,1,3,-1,2,-3))

DSET2 <- data.frame(A=rep(c("V1","V2","V3"), each=3),
                    B=rep(c("X1","X2","X3"), times=3),
                    C=c(1,-2,1,3,-1,2,-3,0,0))

你的两个图表:

Grph <- ggplot(DSET, aes(x=A, y=C, fill=B)) +
  geom_bar(position=position_dodge(width=0.9))
Grph

enter image description here

Grph %+% DSET2

enter image description here

要使用构面获得您想要的效果,请使用:

ggplot(DSET, aes(x=B, y=C, fill=B)) +
  geom_bar(position=position_dodge(width=0.9)) +
  facet_grid(.~A, scale="free_x", space="free")

enter image description here

关于r - ggplot 中的条形图,每组条数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101248/

相关文章:

r - 如何从向量 R 中的共同元素创建向量

r - 无法在 R 中安装基于 Fortran 的包 - "gfortran -m32:not found"

r - 像网格一样的同心圆,以原点为中心

r - ggplot 箱线图中的连接点

r - 在ggplot2中将鼠标悬停时如何在工具提示上显示y值

r - GLM:警告消息: 'newdata' 有 16623 行,但找到的变量有 22488 行

R:按空间分割数据框行,删除公共(public)元素,将不等长的列放入新的df中

r - 如何使用 dplyr 创建 BigQuery tbl

r - 如何使用 R 绘制世界地图

r - Shiny 的flexdashboard中的facet_grid给出错误 "Faceting variables must have at least one value"