r - ggplot2 - 分割超过 2 组的小提琴图

2023-12-14

从哪里继续这个线程离开了。

我想在 ggplot 2 中制作一个分割小提琴图。上面提出的方法仅限于 x 轴上的 2 个类别。

Example:

set.seed(20160229)
my_data = data.frame(
y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)),
x=c(rep('a', 2000), rep('b', 2000)),
m=c(rep('i', 1000), rep('j', 2000), rep('i', 1000)))

#Get densities
library(dplyr)
pdat <- my_data %>%
group_by(x, m) %>%
do(data.frame(loc = density(.$y)$x,
            dens = density(.$y)$y))

#Flip and offset densities for the groups
pdat$dens <- ifelse(pdat$m == 'i', pdat$dens * -1, pdat$dens)
pdat$dens <- ifelse(pdat$x == 'b', pdat$dens + 1, pdat$dens)
Plot

ggplot(pdat, aes(dens, loc, fill = m, group = interaction(m, x))) + 
geom_polygon() +
  scale_x_continuous(breaks = 0:1, labels = c('a', 'b')) +
  ylab('density') +
  theme_minimal() +
  theme(axis.title.x = element_blank())

And the result

看起来可以在 x 轴上放置两个以上的类别,但我不知道如何去做。


我想出了使用 for 循环按组因子级别定位形状的方法。

 set.seed(20160229)
my_data = data.frame(
y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5), rnorm(1000, 1.25), rnorm(1000, 0.75)),
x=c(rep('a', 2000), rep('b', 2000), rep('c', 2000)),
m=c(rep('i', 1000), rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000)))

#Get densities
library(dplyr)
pdat <- my_data %>%
group_by(x, m) %>%
do(data.frame(loc = density(.$y)$x,
            dens = density(.$y)$y))

#Flip and offset densities for the groups
pdat$dens <- ifelse(pdat$m == 'i', pdat$dens * -1, pdat$dens)

#Flip and offset densities for x
    #for(pdat$x){pdat$dens <- (pdat$dens + (as.numeric(as.factor(pdat$x))))}
    for(i in 1:nrow(pdat)){(pdat$dens[i] <- (pdat$dens[i] + as.numeric(as.factor(pdat$x[i]))))}


    #Plot
    library(ggplot2)
    ggplot(pdat, aes(dens, loc, fill = m, group = interaction(m, x))) + 
      geom_polygon() +
      scale_x_continuous(breaks = (1:(as.numeric(length(levels(unique(pdat$x)))))), labels = levels(pdat$x)) +

      #scale_x_continuous(breaks = length(pdat$x), labels=pdat$x)+
      ylab("y") +
      theme_minimal() +
      theme(axis.title.x = element_blank())

https://i.stack.imgur.com/bxfHh.png

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

r - ggplot2 - 分割超过 2 组的小提琴图 的相关文章

  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐

  • Highcharts饼图可以有url链接

    我在我的应用程序中使用 Highcharts 饼图 其中饼图的数据是从数据库填充的 我的问题是填充饼图后 如果我单击某个区域 它应该呈现到特定的 php 页面 是否可以 这是我的代码 function open risk level pie
  • Angular2 - API 接收的内容中的动态组件

    我有一个组件 该组件的内容由 API 接收 并且它包含另一个组件 问题是 如何渲染子组件 当我将接收到的内容放入innerHTML 中时 组件标签将被删除 我检查了所有有关使用resolveComponentFactory创建组件的文章 但
  • 移动 JS 应用程序上的 Location.reload()

    在桌面上 您可以使用location reload 它将重新加载页面 重新启动页面上的代码 但是如果我想 重新加载 一个 JavaScript 应用程序怎么办 有办法这样做吗 谢谢 location reload Page reloads
  • Android EditText如何在所有字符的末尾启动光标指针 - 而不是第一行的末尾

    我有使用 EditText 的评论框 它有几行 当用户返回到该框时 如果框中总共有三行 他们总是位于第 1 行的末尾 而不是第 3 行的末尾 我怎样才能解决这个问题 也许有更简单的方法 但一种方法是使用 editText setSelect
  • 奇怪的Rx+CancellationToken问题:有时注册的回调未完成

    我观察到一个奇怪的现象 有时会在我编写的 Rx 查询中发生 其中涉及CancellationToken 两个回调注册到同一个CancellationToken 一个在查询之外 一个是查询的一部分 的意图CancellationToken是发
  • 在 PowerShell 中计时命令的执行

    有没有一种简单的方法可以在 PowerShell 中计时命令的执行时间 例如 Linux 中的 time 命令 我想出了这个 s Get Date do something ps1 e Get Date e s TotalSeconds 但
  • Tkutter 错误:无法在 内部使用几何管理器网格。已经有由包管理的奴隶

    from tkinter import import random import time tk Tk canvas Canvas tk width 1000 height 1000 canvas pack i 0 x1 50 y1 0 c
  • 如何在Python中为列表中的每个字符串创建子列表?

    例如 我有这个列表 word1 organization community 我有一个函数可以从列表中的单词中获取同义词 from nltk corpus import wordnet as wn def getSynonyms word1
  • 同步框架:我可以仅同步表的子集吗?

    与同步框架同步数据的常规代码片段是这样的 LocalDBSyncAgent syncAgent new LocalDBSyncAgent Microsoft Synchronization Data SyncStatistics syncS
  • Django 字符集和编码

    我正在尝试在 Mysql 数据库中存储和查看希腊字符 我想使用 utf8 编码 我使用以下命令更改我的数据库 ALTER DATABASE el CHARACTER SET utf8 COLLATE utf8 general ci 现在 当
  • 如何将 DOM 元素转换为 jQuery 元素?

    我正在使用 document createElement 创建一个元素 现在我如何将它传递给只接受 Jquery 对象的函数 id 我无法使用它 因为该元素尚未在页面中呈现 var elm document createElement di
  • 具有可为空值类型参数的扩展方法解析

    public static class Extension public static void Test this DateTime dt void Main var now DateTime Now Extension Test now
  • AD 计算机对象上的设置 ACL

    我正在尝试Set Acl在 AD 中的计算机对象上 首先我使用以下方法获取 ACL acl Get Acl AD CN Tester1 OU Ou1 OU OU2 OU OU3 DC Contoso DC com Access 这给了我该计
  • jQuery 可选择:如何在第一次加载时选择项目

    我正在使用 jQuery selectable 来选择 net 列表视图中的项目 用户可以选择他想要的项目 并可以通过单击保存按钮来保存它 下次当用户来到页面时 他将能够看到他之前选择的项目 使用 jQuery 可选择插件 用户可以通过单击
  • 是否有必要将 $scope 注入到 angularjs 中的控制器中? [复制]

    这个问题在这里已经有答案了 下面的两个代码片段有什么区别吗 两者都有效 1 myApp controller myAppController scope function scope function body 2 myApp contro
  • 在perl中的多行正则表达式中分割一行正则表达式

    我无法将正则表达式分成多行 我希望我的正则表达式与给定的行匹配 Code l k dfsakd lkaDald 所以我创建了这个有效的正则表达式 my firstRegexpr qr s s Code s code x 但现在我想像这样将它
  • AngularJS 1.2 跨源请求仅支持 HTTP

    有什么方法可以配置 Angular 应用程序以使其可用吗 在使用工厂时 顺便说一句 我使用本地主机作为网络服务器 但我正在向其他服务器 同一网络 发出请求 angular module demoApp factories factory d
  • C中的客户端服务器多个连接

    我试图推理用 C 语言实现的带有套接字的简单服务器如何处理并发客户端 假设一个简单的服务器等待客户端连接 然后读取客户端发送的消息 read 是一个阻塞函数 因此服务器将阻塞 直到客户端写入它 如果我们假设两个客户端同时向服务器写入数据 服
  • VB.NET 中的屏幕截图程序

    我创建了一个捕获桌面屏幕截图的应用程序 它与我在表单中使用的按钮配合得很好 但现在我想使用计时器让这个东西自动工作 但是每当我尝试运行程序时NullReferenceException发生任何人都可以告诉我这里出了什么问题吗 TimerCa
  • r - ggplot2 - 分割超过 2 组的小提琴图

    从哪里继续这个线程离开了 我想在 ggplot 2 中制作一个分割小提琴图 上面提出的方法仅限于 x 轴上的 2 个类别 Example set seed 20160229 my data data frame y c rnorm 1000