R语言绘制堆叠的环状条形图

堆叠条形图的进阶版,极坐标下的barplot,下面是R绘制堆叠的环状条形图的小例子。

#调用包
library(tidyverse)
library(viridis)

# 模拟数据集
data <- data.frame(
  individual=paste( "Mister ", seq(1,60), sep=""),
  group=c( rep('A', 10), rep('B', 30), rep('C', 14), rep('D', 6)) ,
  value1=sample( seq(10,100), 60, replace=T),
  value2=sample( seq(10,100), 60, replace=T),
  value3=sample( seq(10,100), 60, replace=T)
)

# 把数据转化成统一的格式
data <- data %>% gather(key = "observation", value="value", -c(1,2)) 

# 再每组末尾添加空白距离
empty_bar <- 2
nObsType <- nlevels(as.factor(data$observation))
to_add <- data.frame( matrix(NA, empty_bar*nlevels(data$group)*nObsType, ncol(data)) )
colnames(to_add) <-
### 如何使用R语言中的`ggplot2`绘制堆叠柱状 为了创建堆叠柱状,在R语言中可以利用强大的形包`ggplot2`来实现这一目标。下面展示了一种具体的方法,通过构建一个简单的例子说明如何操作。 #### 创建数据集 首先定义一个合适的数据结构对于后续绘至关重要。这里假设有一个数据框包含了不同类别下的数值信息,这些信息用于构成最终的表[^2]。 ```r data <- data.frame( city = rep(c('Beijing', 'Shanghai'), each=3), type = factor(rep(letters[1:3], times=2)), value = c(10, 20, 30, 40, 50, 60) ) ``` 此段代码初始化了一个名为`data`的数据框,它由三个变量组成:城市名称(`city`)、分类标签(`type`)以及对应的值(`value`)。 #### 构建基础形对象 有了准备好的数据之后,就可以调用`ggplot()`函数开始搭建基本框架,并指定横坐标轴为城市名,纵坐标轴表示具体的数量大小;同时设置填充颜色依据于不同的类型区分各个部分。 ```r library(ggplot2) p <- ggplot(data, aes(x=city, y=value, fill=type)) ``` 这段脚本加载了必要的库并建立了初步的绘环境,其中指定了x轴上的分组因素(即城市),y轴上代表的具体测量值,还有用来着色的不同种类。 #### 添加几何层以形成堆叠效果 为了让条形之间相互叠加而不是并列排列,需向上述基础上追加一层几何形状——直方(bar),并通过调整参数让它们按照比例填满整个高度范围,从而达到预期的效果[^4]。 ```r p + geom_bar(stat='identity', position='stack') ``` 此处的关键在于选择了`position='stack'`选项使得各成分能够垂直累积起来,而`stat='identity'`则告诉系统直接采用原始输入作为统计量而非计算频率或其他衍生指标。 #### 进一步美化和完善表细节 最后还可以继续优化视觉呈现方式,比如修改主题样式、增加标题或者自定义配色方案等,使生成的作品更加美观大方且易于理解。 ```r p + geom_bar(stat='identity', position='stack') + labs(title="Stacked Bar Chart Example") + theme_minimal() ``` 综上所述,借助于`ggplot2`的强大功能,只需几行简洁明了的命令就能轻松制作出专业的堆叠柱状作品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值