博客:www.jiaopengzi.com

焦棚子的文章目录
请点击下载附件

一、效果

二、data

三、添加字段

注意红色框标注地方

四、code

# 下面用于创建数据帧并删除重复行的代码始终执行,并用作脚本报头:
# dataset <- data.frame(dim, wd, values)
# 在此处粘贴或键入脚本代码:
====================================================================================================
参考:https://stackoverflow.com/questions/48259930/how-to-create-a-stacked-waterfall-chart-in-r
译文:https://codeday.me/bug/20190319/786734.html
====================================================================================================
library(“ggplot2”)
library(“dplyr”)
df <- dataset
df.tmp <- df %>%
mutate(
dim = factor(dim,
levels = c(“A”, “B”, “C”, “D”)),
wd = factor(wd,
levels = c(“E”, “W”, “Q”))
) %>%
arrange(dim, desc(wd)) %>%
mutate(end.Bar = cumsum(values),
start.Bar = c(0, head(end.Bar, -1))) %>%
rbind(
df %>%
group_by(wd) %>%
summarise(values = sum(values)) %>%
mutate(
dim = “Total”,
wd = factor(wd,
levels = c(“E”, “W”, “Q”))
) %>%
arrange(dim, desc(wd)) %>%
mutate(end.Bar = cumsum(values),
start.Bar = c(0, head(end.Bar, -1))) %>%
select(names(df),end.Bar,start.Bar)
) %>%
mutate(group.id = group_indices(., dim)) %>%
group_by(dim) %>%
mutate(total.by.x = sum(values)) %>%
select(dim, wd, group.id, start.Bar, values, end.Bar, total.by.x)
ggplot(df.tmp, aes(x = group.id, fill = wd)) +
geom_rect(aes(x = group.id,
xmin = group.id - 0.25,
xmax = group.id + 0.25,
ymin = end.Bar,
ymax = start.Bar),
color=“black”,
alpha=0.95) +
geom_segment(aes(x=ifelse(group.id == last(group.id),
last(group.id),
group.id+0.25),
xend=ifelse(group.id == last(group.id),
last(group.id),
group.id+0.75),
y=ifelse(wd == “E”,
end.Bar,
max(end.Bar)2),
yend=ifelse(wd == “E”,
end.Bar,
max(end.Bar)2)),
colour=“black”) +
geom_text(
mapping =
aes(
label = ifelse(values < 150,
“”,
ifelse(nchar(values) == 3,
as.character(values),
sub("(.{1})(.)", “\1,\2”,
as.character(values)
)
)
),
y = rowSums(cbind(start.Bar,values/2))
),
color = “white”,
fontface = “bold”
) +
geom_text(
mapping =
aes(
label = ifelse(wd != “E”,
“”,
ifelse(nchar(total.by.x) == 3,
as.character(total.by.x),
sub("(.{1})(.)", “\1,\2”,
as.character(total.by.x)
)
)
),
y = end.Bar+200
),
color = “#213058”,
fontface = “bold”
) +
#分类颜色设置
scale_fill_manual(values=c(’#ADB175’,’#8E599F’,’#213058’)) +
Y轴设置scale_y_continuous(
expand=c(0,0),
limits = c(0, 4000),
breaks = seq(0, 4000, 500),
labels = ifelse(nchar(seq(0, 4000, 500)) < 4,
as.character(seq(0, 4000, 500)),
sub("(.{1})(.*)", “\1,\2”,
as.character(seq(0, 4000, 500))
)
)
) +
scale_x_continuous(
expand=c(0,0),
limits = c(min(df.tmp$group.id)-0.5,max(df.tmp$group.id)+0.5),
breaks = c(min(df.tmp$group.id)-0.5,
unique(df.tmp$group.id),
unique(df.tmp$group.id) + 0.5
),
labels =
c("",
as.character(unique(df.tmp$dim)),
rep(c(""), length(unique(df.tmp$dim)))
)
) +
theme(
text = element_text(size = 14, color = “#213058”),
axis.text = element_text(size = 10, color = “#213058”, face = “bold”),
axis.text.y = element_text(margin = margin(r = 0.3, unit = “cm”)),
axis.ticks.x =
element_line(color =
c(“black”,
rep(NA, length(unique(df.tmp$dim))),
rep(“black”, length(unique(df.tmp$dim))-1)
)
),
axis.line = element_line(colour = “#213058”, size = 0.5),
axis.ticks.length = unit(.15, “cm”),
axis.title.x =       element_blank(),
axis.title.y =       element_blank(),
panel.background =   element_blank(),
plot.margin =        unit(c(1, 1, 1, 1), “lines”),
legend.text =        element_text(size = 10,
color = “#213058”,
face = “bold”,
margin = margin(l = 0.25, unit = “cm”)
),
legend.title =       element_blank()
)

注意:

1、R视觉对象,发布需要pro才行;

2、data的形式和X、Y轴的设置;

3、对R要有所了解。

by焦棚子

焦棚子的文章目录

120_PowerBI堆积瀑布图_R脚本Visual相关推荐

  1. Visual Studio Code (echarts)数据可视化瀑布图实现及标题的格式设置标题背景颜色以及设置副标题和标题加边框,设置边框背景和边框颜色柱形图颜色及柱形图的宽度设置完整代码

    设置标题背景颜色以及设置副标题和标题加边框, 设置边框背景和边框颜色 柱形图颜色及柱形图的宽度设置完整代码 <!DOCTYPE html> <html lang="en&q ...

  2. 简介+原理+绘制,详解 Python「瀑布图」的整个制作流程!

    作者|黄伟呢 来源|数据分析与统计学之美 简介 瀑布图,由麦肯锡顾问公司所独创的图表类型,因为形似瀑布流水,所以被大家称之为瀑布图(Waterfall Plot),在企业经营分析.财务分析中使用较多, ...

  3. 柱状图、堆叠柱状图、瀑布图有什么区别?怎样用Python绘制?(附代码)

    来源:大数据DT(ID:hzdashuju) 作者:屈希峰,资深Python工程师,知乎多个专栏作者 本文约8000字,建议阅读20分钟 柱状图是当前应用最广泛的图表之一,你几乎每天都可以在电子产品上 ...

  4. 如何用python画数据图-利用Python绘制数据的瀑布图的教程

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

  5. python瀑布图怎么做_教你用Python创建瀑布图

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

  6. 使用python画图表_利用Python绘制数据的瀑布图的教程

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

  7. python瀑布图怎么做_利用Python绘制数据的瀑布图的教程

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

  8. 柱状图、堆叠柱状图、瀑布图有什么区别?怎样用Python绘制?

    导读:柱状图是当前应用最广泛的图表之一,你几乎每天都可以在电子产品上看到它.它有哪些分类?可以展示哪些数据关系?怎样用Python绘制?本文带你逐一了解. 作者:屈希峰,资深Python工程师,知乎多 ...

  9. 瀑布图-图表自定义系列属性

    1. 概述 1.1 应用场景 为了更加凸显图表的数据,往往需要给不同的柱形赋予不同的颜色.如财务报表往往 收入是正值为绿色,付出是负值为红色.如下图所示: 1.2 实现思路 通过特效>条件显示来 ...

最新文章

  1. 凡科虚拟服务器怎样做301,虚拟主机301重定向怎么做?网站301重定向方法之一
  2. linux grep 点号的匹配
  3. java.util.concurrent.Locks使用指南
  4. 回归分析结果表格怎么填_手把手教绘制回归分析结果的森林图GraphPad Prism和Excel...
  5. linux网络相关常见问题
  6. 2014\Province_C_C++_B\2 切面条
  7. Linux 常用命令
  8. 给大家推荐一个优质Linux内核技术公众号-Linux阅码场
  9. mysql 瓶颈诊断_MySQL 监控、性能瓶颈排查
  10. Struts2理解--动态方法和method属性及通配符_默认Action
  11. 【Android】12.0 第12章 Intent及其过滤器—本章示例主界面
  12. Alexa web ranking list(Alexa top 500排名)
  13. android go怎么安装,Android studio3.0安装教程-Go语言中文社区
  14. 【时间序列】时间序列曲线平滑+预测(LSTM)
  15. 转盘式视觉筛选机及其图像识别系统
  16. 初学Java(三)——学习准备
  17. 华为南研所机考练习2-计算麻将的番数
  18. MMaction2中AVA数据集标注文件解读
  19. C++读取bmp格式图片
  20. 实体服装店如何开展线上销售的新模式?

热门文章

  1. 题库明细 使用java理解程序逻辑
  2. 判断数组是否有序排列的0831
  3. javascript 西瓜一期 05-08 计算机的基本组成
  4. 安装虚拟环境virtualenv与virtualenvwrapper在centos7系统上
  5. django-自定义错误页面-404
  6. Linux完全删除用户
  7. 美的物联平台的云上实践与应用
  8. AngularJs 时间格式化处理
  9. 从地理围栏看物联网安防
  10. Linux模拟超级终端minicom(二)