- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只能用相当大的数据集可靠地重建这个问题,所以我粘贴了整个代码 to a pastebin这是没有数据部分的代码:
# read tmp from the pastebin
library(ggplot2)
plt <- ggplot(tmp, aes(region, score))
plt1 <- plt + geom_violin(aes(region, score), scale='width', trim=F) + ylim(0, 1) + ggtitle('with ylim')
plt2 <- plt + geom_violin(aes(region, score), scale='width', trim=F) + ggtitle('without ylim')
为该图设置 y 限制会导致非常丑陋的“ fiddle ”:
这是什么,为什么会发生这种情况以及如何避免这种丑陋的问题?
顺便说一句,设置 trim=T
可以解决问题。
最佳答案
通过一些挖掘,我认为问题的技术根源在于:您的 y
变量几乎不在 [0, 1] 范围内,因此密度当然会落在范围之外那个。使用stat_density
,这个多余的密度刚刚被切断,但是使用geom_violin
/stat_ydensity
,多余的部分被留下,并且允许比例扩展.但是,使用 ylim
和 trim=FALSE
,[0, 1] 之外的这些 y
值将被保留并设置为 NA
,它搞砸了 geom_polygon
中的绘图。您实际上可以通过 [0, 1] 中数据的较小示例看到这一点:
x <- runif(1e4, 0, 1)
ggplot(mapping=aes(1, x)) + geom_violin(trim=FALSE) + ylim(0, 1)
有几种方法可以解决这个问题。第一种是保留默认的 trim=TRUE
:
ggplot(mapping=aes(1, x)) + geom_violin() + ylim(0, 1)
请注意,在这种情况下,ylim
(scale_y_continuous
) 实际上会删除 [0, 1] 之外的原始数据。在您的示例中,除此之外您没有任何要点,我在这里也没有。但这是需要注意的事情。顶部和底部也会有一些填充,可能会误导观众认为 [0, 1] 之外没有密度。
也许更好的解决方案是使用 coord_cartesian
,它会简单地“放大”图形,而不会影响数据和结果密度:
ggplot(mapping=aes(1, x)) + geom_violin(trim=FALSE) + coord_cartesian(ylim=c(0, 1))
关于r - ggplot2 geom_violin 的非常奇怪的图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301874/
我想绘制水平的 fiddle 图(因为我的标签很长)。我的设计约束是: 多个方面(f1),每个方面有多个类别(f2)(所以我想使用aes(x=f2)和facet_wrap(~f1) 每个方面的比例不同
我正在研究具有平滑且几乎凸的整数值分布的数据。但是当我用 geom_violin() 打印它时,我得到了奇怪的形状,就像有非常罕见的中间非整数值一样。如何避免 y = 1.5 和 y = 2.5 附近
我如何填写 geom_violin情节在 ggplot2 基于固定截止值的不同颜色? 例如,给定设置: library(ggplot2) set.seed(123) dat = 0,'Above','
如何增加 fiddle 图填充的 alpha 而不是边界线的 alpha? 将 alpha 作为参数更改为 geom_violin() 会导致填充和线条发生变化。 最佳答案 如果您希望避免绘制两次,可
如果数据集每个单元格至少包含三个数据点,则 fiddle 的躲避会按预期工作。请参见下图。 道奇如期而至 但是,在随后的代码中,“Verbal Class B”单元格中只有 2 个数据点。只有两个数据
我可能遇到了一种罕见的情况,我想使用 R 绘制几个组的值。的 ggplot2的 geom_violin + geom_boxplot ,按组填充和着色 fiddle ,并按组为盒子着色。有时,一个或多
我只能用相当大的数据集可靠地重建这个问题,所以我粘贴了整个代码 to a pastebin这是没有数据部分的代码: # read tmp from the pastebin library(
有没有办法忽略 geom_violin 中的异常值并使 y 轴图与 Q1 和 Q3 分位数相关? (range=1.5 在 base R 中)。如果这可以自动化(即不只是调用特定的 y 轴限制),那就
在 data.frame 中,我希望能够将 ggplot2::geom_violin() 的密度估计值与使用 stat_function() 计算的密度估计值以及每个因子的密度估计值进行比较。 在此设
我开始非常喜欢 fiddle 图,因为当你有有趣的分布时,它们让我感觉箱形图更好。我喜欢自动化很多东西,因此遇到了一个问题: 当一个变量的方差为 0 时,箱线图只会在该点为您提供一条线。然而,Geom
我想用聚合数据创建 fiddle 图。我的数据有一个类别、一个值列和一个计数列: data <- data.frame(category = rep(LETTERS[1:3],3),
我试图找到解决我的问题的方法,但我找不到。 我想用 draw_quantiles c(0.25, .50, .75) 绘制 geom_violin,但它返回此错误: "Error in grid.Ca
我是一名优秀的程序员,十分优秀!