前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R绘图 | 不等宽柱形图绘制

R绘图 | 不等宽柱形图绘制

作者头像
小汪Waud
发布于 2023-02-20 03:41:59
发布于 2023-02-20 03:41:59
62600
代码可运行
举报
文章被收录于专栏:小汪Waud小汪Waud
运行总次数:0
代码可运行

不等宽柱形图是一个相对于(等宽)柱形图的概念,「除了其高度以外,宽度同样代表一个指标」,可以同时反映两个具有相关性的指标大小。

分步讲解

1 构建数据集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mydata<-data.frame(Name=paste0("Sample",1:4),Width=c(35,30,10,5),Value=c(56,37,63,59))

我们希望以Name为横坐标,Value为纵坐标作柱形图,同时用柱子的宽度表示Width。

2 构建柱子的坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构建柱子X轴的起点,从0开始
mydata$xmin<-0
for (i in 2:4){
  mydata$xmin[i]<-sum(mydata$Width[1:i-1])
}

# 构造矩形X轴的终点,从第一个柱子的宽度开始
for (i in 1:4){
  mydata$xmax[i]<-sum(mydata$Width[1:i])
}

3 ggplot作图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 作图
ggplot(mydata)+
  geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=Value,fill=Name),
            color="black",size=0.25,alpha=0.6)+
  ylab("Value")+
  xlab("Width")+
  theme_bw()

作图时只需要将柱子的四个坐标映射给geom_rect,一张不等宽柱状图就完成啦!

如果想更换为条形图,只需要在最后加上coord_flip()。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

# 作图
ggplot(mydata)+
  geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=Value,fill=Name),
            color="black",size=0.25,alpha=0.6)+
  ylab("Value")+
  xlab("Width")+
  theme_bw()+
  coord_flip()

完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构建数据集
mydata<-data.frame(Name=paste0("Sample",1:4),Width=c(35,30,10,5),Value=c(56,37,63,59))
mydata$xmin<-0
for (i in 2:4){
  mydata$xmin[i]<-sum(mydata$Width[1:i-1])
}
# 构造矩形X轴的终点(最大点)
for (i in 1:4){
  mydata$xmax[i]<-sum(mydata$Width[1:i])
}

# 作图
ggplot(mydata)+
  geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=Value,fill=Name),
            color="black",size=0.25,alpha=0.6)+
  ylab("Value")+
  xlab("Width")+
  theme_bw()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小汪Waud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验