问题标签 [violin-plot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3869 浏览

r - R - 修改(ggplot)小提琴图的宽度作为 y 变量的函数

我想修改使用 ggplot2 包构建的小提琴图的宽度。

背景如下:我得到了一个数据集,该数据集计算了粒子特定大小的观察次数。这个大小将是我的 y 变量,我称之为“事件”的事件计数。

我简化了数据,所以我只查看 2 个不同的集合(由“id”表示),融合到 1 个数据帧中。

据我所知,小提琴图是根据特定值的出现次数计算小提琴的宽度。因为我希望绘图的 y 轴是大小,所以我需要一个数据框,其中不再包含“事件”列,而是包含新行,具体取决于“事件”的值。

我不知道如何更容易地重塑它,所以我正在运行一个带有计数器变量和 if 子句的 for 循环,用于检查当前迭代必须添加到新数据帧 (dt2) 中的行类型。

然后我使用 geom_violin() 使用 ggplot 包进行绘图。

到目前为止一切顺利,但这并不是我想要的。我希望小提琴图可以为我提供具有此特定尺寸的所有粒子的总体积,而不是特定尺寸的粒子数。即小提琴的宽度应该是计数(因此 dt1 的“事件”值或具有特定参数 dt2 的行数)和尺寸本身的函数。这意味着我希望小提琴随着更高的 y 值变得更宽。

考虑例如颗粒的球形形状,尺寸为 10 的“事件”值 7 应给出 7 * (4/3 * pi * (10/2)^3) 的宽度。然而,对于大小为 50 的粒子,相同的“事件”值应导致计算出的宽度为 7 * (4/3 * pi * (50/2)^3)。

有没有办法改变 geom_violin 图的宽度计算作为 y 变量的函数?不幸的是,我无法真正更改数据框以考虑体积的数学公式(即,将“事件”与球形体积公式相乘),因为尺寸 > 100 和“事件”值 > 1000 的粒子的行数达到天文高度(将导致我的数据包含约 10,000,000,000 行的数据框)。

任何想法都非常感谢。

提前致谢!

0 投票
1 回答
1476 浏览

r - 使用 ggplot2 在分割小提琴图上叠加散点

我按照这个不错的答案在 2x2 设计中生成分裂小提琴图

现在想象这些数据来自不同主题的重复测量。另外,我想在散点图中绘制单个数据(我知道该图可能最终太忙,我想先看看它)。

我快到了,但有一个小错误可能很容易修复。如果有更好的方法可以做到这一点,我会提供一个完整的工作示例。

我直接从上一个问题中复制了第一部分:

我添加subj到我的数据框中,因为我想绘制每个主题的平均值

到目前为止,效果很好。现在我尝试为每个主题添加我的平均值

我得到错误:Error in eval(expr, envir, enclos) : object 'dens' not found

0 投票
1 回答
3392 浏览

r - 对于geom_violin,如何指定所有小提琴的总面积?

geom_violin在对within的调用中ggplot2,您可以通过指定 来指定每把小提琴的面积应与组成该小提琴的观察次数成正比scale="count"

我假设这是通过获取一些总面积(我们称之为数量 X)并在所有要绘制的小提琴之间按比例划分的,从而在内部进行操作。这就是我想要的,除了如果组之间的 N 存在足够大的差异以致某些组的 N 相对较低,这可能导致小提琴非常窄。在我的情况下,这只会使填充颜色有点难以看到。

我认为这可以在很大程度上解决,至少在我的情况下,只需将 X 扩展一点,以便真正小的小提琴获得足够的区域以保持可读性。换句话说,我想根据观察次数保留小提琴之间的面积变化,但增加小提琴之间划分的总面积的“池”,以便每个小提琴都稍微变大。

任何人都知道如何做到这一点?为此必须有一个切换。我尝试过对geom_violin诸如width, size,等的参数大惊小怪violinwidth,但到目前为止还没有运气......

编辑:一个可以试验的无聊但可重复的“样本”数据集的代码。

0 投票
1 回答
193 浏览

boxplot - 基于实际数据或kde的seaborn小提琴图中的箱线图?

我正在使用带有 inner='box' 和 cut=0 的 seaborn violinplot。

我看到箱线图有一条一直延伸到切口的线。这表明箱线图不是根据数据本身计算的,而是在 kde 上计算的。这个对吗?

0 投票
1 回答
97 浏览

r - 为情节添加额外信息!R

我通过附加不同的图和这些线创建了以下小提琴图:

在此处输入图像描述

现在我想在 Y 轴上添加一条线,如下图 X 轴所示:

在此处输入图像描述

如您所见,X 轴中的这条线添加了有关样本来自大陆的信息。

如何将此信息添加到绘图的 Y 轴?我需要提供更多代码吗?谢谢!

0 投票
0 回答
90 浏览

r - 尝试使用 R ggplot2 创建小提琴图时获得类似图像的奇怪散点图

我正在尝试创建一个小提琴图,将遗传变异类别与手术时的年龄进行比较,我得到了一些非常奇怪的结果。

我一直在使用以下指南,这使得创建小提琴图看起来很容易:

http://www.sthda.com/english/wiki/ggplot2-violin-plot-quick-start-guide-r-software-and-data-visualization

有或没有致病性变异的个体的手术年龄

0 投票
1 回答
1291 浏览

python - Jupyter Notebook 中的 Seaborn 和 plotly 小提琴情节杀死内核

我正在尝试在 Jupyter 笔记本中使用 seaborn 0.7.1 生成小提琴图。Boxplot 适用于相同的数据,但 violinplot 会导致内核“意外死亡”。

我也尝试过使用 plotly 1.12.9 来绘制小提琴图(按照 plotly 网站上的示例),但这也会杀死内核。

有谁知道错误可能是什么或者我应该如何调试它?

这是我用于 seaborn 的代码:

这是我用于情节的代码:

Jupyter Notebook 未显示的错误是:

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

0 投票
2 回答
727 浏览

r - 小提琴图 ggplot2 与列的宽度

我对 R 很陌生,我只将它用于可视化,所以我可能会遗漏一些简单的东西。

我想要的是,我有两列应该是 x 和 y 轴。我拥有的第三列应该定义图形的宽度。尽管我从不同的答案中尝试了很多东西,但我的代码并没有走得太远。假设我的代码这么远:

这并没有真正取得任何成就。

我有一张这样的桌子:

X 轴应该是研究列,y 应该是Col0,小提琴图的宽度应该是值列。我无法拆分 col0,因为我只有数据作为范围。

任何有关检查内容,如何执行此操作的指针将不胜感激。抱歉,如果我错过了类似的问题。

提前致谢

0 投票
0 回答
3561 浏览

python - seaborn violinplot 超出有效范围

我正在使用 seaborn 创建小提琴图。现在我正在创建不成比例的小提琴图(所以所有值都在 0 和 1 之间),但生成的小提琴图非常偏离。它的底部范围为负值,其顶部范围为大于 1 的值。下面是我运行测试它的示例:

显然,没有一个值超出范围 [0,1],但小提琴图看起来很诡异:

超出范围的小提琴情节

帮助将不胜感激!

0 投票
1 回答
443 浏览

r - 分割小提琴图,顶部有点以指示信息

这是来自此处此处的后续帖子

我已经成功地为需要比较的数据(两个中值估计器密度,两个案例)实现了拆分小提琴 ggplot2。现在,因为我想添加一些置信区间。我正在关注上面链接中发布的代码:

编辑:一个可重现的例子

在这里,我制作密度,提取(x,y)对。然后我得到分位数回来,

现在我在这里尝试提取密度内的值,如链接帖子中所述

查找密度中的数据点

然后不幸的是我面临以下问题,这些点没有映射在密度上,而是映射在平面上。