如何在 Alluvial/Sankey 图(在 R ggalluvial 上)的流量项上添加值标签?

2023-12-03

我希望在 R 上标记冲积/桑基图的“流量”部分。

层(列)可以很容易地被标记,但连接它们的流却不能。我所有阅读文档和实验的尝试都没有成功。

在下面的示例中,“freq”预计会标记在流量连接部分上。

chart

library(ggplot2)
library(ggalluvial)

data(vaccinations)
levels(vaccinations$response) <- rev(levels(vaccinations$response))
ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")

有一个选项可以获取原始数字并将其用作流程部分的标签:

ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  geom_text(stat = "flow", nudge_x = 0.2) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")

enter image description here

如果您想更好地控制如何标记这些点,您可以提取图层数据并对其进行计算。例如,我们可以仅计算起始位置的分数,如下所示:

# Assume 'g' is the previous plot object saved under a variable
newdat <- layer_data(g)
newdat <- newdat[newdat$side == "start", ]
split <- split(newdat, interaction(newdat$stratum, newdat$x))
split <- lapply(split, function(dat) {
  dat$label <- dat$label / sum(dat$label)
  dat
})
newdat <- do.call(rbind, split)

ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  geom_text(data = newdat, aes(x = xmin + 0.4, y = y, label = format(label, digits = 1)),
            inherit.aes = FALSE) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")

enter image description here

这仍然是一种关于你到底想把标签放在哪里的判断。一开始就这样做是简单的方法,但如果您希望这些标签大约位于中间并相互躲避,则需要进行一些处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Alluvial/Sankey 图(在 R ggalluvial 上)的流量项上添加值标签? 的相关文章

  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • 如何从 R 读取 PDF 元数据

    我们很好奇 有没有一种方法可以从 R 读取 PDF 元数据 例如下面显示的信息 通过搜索我对此无能为力 r pdf metadata在当前的问题库中 非常欢迎任何指点 我想不出纯 R 的方法来执行此操作 但您可能可以安装您最喜欢的 PDF
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何使用 tidymodels 和工作流集在同一数据集上拟合多个不同的线性模型

    我想评估同一数据集上多个 主要是 线性回归模型的性能 我想也许使用tidymodels包连同workflowsets workflow set 可能会起作用 我按照这个例子here https workflowsets tidymodels
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • 线性判别分析图

    如何将样本 ID 行号 作为标签添加到此 LDA 图中的每个点 library MASS ldaobject lt lda Species data iris plot ldaobject panel function x y points

随机推荐

  • 在Python中使用函数之前应该先定义它吗?

    函数应该在使用之前定义吗 但为什么下面的代码有效 def main dog def dog print This is a dog if name main main 我的意思是dog 是在调用后定义的 这是如何工作的 实际上不是 在调用后
  • BigQuery 有区域限制或其他区域之间有延迟吗?

    我想从 GCE 实例将数据存储在 BigQuery 上 并从不同区域实例查询它 例如 存储来自欧盟实例的数据 查询来自美国实例的数据 这是否可以毫不拖延地实现 我认为将数据复制到其他区域需要一些时间 BigQuery 有区域限制 很少有 像
  • 将字符串转换为小数,保留分数

    我正在尝试转换1200 00 to decimal but Decimal Parse 删除 00 我尝试过一些不同的方法 但它总是删除 00 除非我提供一个不同于 0 的分数 string value 1200 00 Method 1 v
  • Tensorflow 中的 8 位量化错误

    我一直在尝试新的8位量化功能在 TensorFlow 中可用 我可以毫无问题地运行博客文章中给出的示例 googlenet 的量化 并且它对我来说效果很好 现在 我想将同样的方法应用于更简单的网络 因此 我使用了 CIFAR 10 的预训练
  • 为什么Volley DiskBasedCache拼接时不直接获取缓存文件名

    Creates a pseudo unique filename for the specified cache key param key The key to generate a file name for return A pseu
  • SpelEvaluationException 找不到方法

    当我尝试使用 SpEL 将 User 传递给服务方法时 我面临下一个问题 evaluate expression commonService userTest user result flowScope user 春天抛出了以下异常 org
  • 多个 HTTP 授权标头?

    是否可以在 HTTP 消息中包含多个授权标头 具体来说 我想包括一种承载令牌类型 传递 OAuth 访问令牌 和一种基本类型 传递 base64 编码的用户名 密码 GET presence alice HTTP 1 1 Host serv
  • Python Flask Web 应用程序导航无需刷新页面

    我想开发一个像Google Contacts一样的Flask导航栏 当我单击每个导航按钮 如图所示的绿色框 时 我想在红色框内渲染特定的 HTML 页面 如图所示 而不刷新页面 我已经尝试过使用 扩展 layout html 正如 Klau
  • 通过文本框在 sql server 2005 中存储数据时出现错误

    我通过文本框和按钮在 SQL Server 2005 中存储数据 大约 1500 个字 我正在使用这段代码 protected void Button1 Click object sender EventArgs e conn Open S
  • 碰撞检测实施

    我有一个碰撞检测类 它通过查找中心之间的距离以及该距离是否足够小而足以发生碰撞来工作 请参阅碰撞检测错误 我的问题是试图让它真正发挥作用 椭圆形会发生碰撞 如果有必要 我会解释更多 谢谢 最好的方法是在图像重叠时实现每像素碰撞检测 您可以在
  • 字符串比较:与 PHP 中 JavaScript 的 localeCompare 相同吗?

    有没有办法让 PHP 中的字符串比较函数与 JavaScript 的相同string localeCompare 我的目标是制作一个可以应用于 PHP 和 JS 中的简单对象的哈希器 属性排序可以根据这个问题来解决 按属性值对 JavaSc
  • 如何使用 php 替换 CSV 文件中一行中的 1 个值?

    这是我非常简单和基本的帐户系统 只是一个学校项目 我希望用户能够更改他们的密码 但我不确定如何仅替换一行中的密码值 保持所有其他值相同 CSV 文件 ID Username Email DateJoined Password UserSco
  • Spring - 动态创建JMSTemplates

    我正在使用 Spring boot 并且我想动态创建多个 JMS 模板 因为我想连接到不同的 JMS 实例 我知道使用注释 将 ConnectionFactory 链接到 JMSTemplate 的标准方法 我希望每个不同的 JMS 实例都
  • 从数据库删除后无法更新 showModalBottomSheet 内的 ListView

    我有一个 ModalBottomSheet 里面有一个 ListView ListView 连接到 sqlite 数据库 所有创建 读取和删除方法都工作正常 但是当我删除一个项目时 我收到批准操作的 toast 消息 但我的视图没有更新 当
  • 如何在 MATLAB 中对离散 2D 曲面进行积分?

    我有一个函数z f x y where z是该点的值 x y 我该如何整合z超过x yMATLAB 中的平面 通过上面的函数 我实际上是指我有类似于哈希表的东西 也就是说 给定一个 x y 对 我可以查表找到对应的z value 如果这些点
  • 命名超类“Message”时的 Objective-C-Runtime 错误

    我有以下类层次结构 interface Message NSObject end implementation Message void dealloc I won t be called super dealloc end interfa
  • 如何通过panoid在谷歌街景中获取原始全景图像?

    我已经获得了通过 panoid 获取全景图像的参考 但它只给了我缩略图 但我想要直接从街景获取原始全景图像 下面给出了我所得到的链接 请帮我获取原始全景图像而不是缩略图 虽然没有官方API可以下载完整的全景图 您可以使用许多工具 视窗工具
  • 如何在地图上添加随机标记但避开大海?

    Google Ajax API 游乐场 http code google com apis ajax playground exp maps map markers 提供了一个向任何地图添加随机标记的好例子 function initial
  • C# 图像拼接

    我想要的是 拍摄 3 个图像 第一个图像保持原始大小 仅使用第一个图像大小的 1 2 从左侧开始 将另一个图像连接到它的底部 然后拍摄第三张图像并将其放在我整天都在看的第一张图像的右下半部分 有人有想法或想法吗 如果忽略纵横比 Image
  • 如何在 Alluvial/Sankey 图(在 R ggalluvial 上)的流量项上添加值标签?

    我希望在 R 上标记冲积 桑基图的 流量 部分 层 列 可以很容易地被标记 但连接它们的流却不能 我所有阅读文档和实验的尝试都没有成功 在下面的示例中 freq 预计会标记在流量连接部分上 library ggplot2 library g