相关疑难解决方法(0)

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助.

您有什么建议创建优秀示例的提示?如何以文本格式粘贴中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput(),dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外c,df,data等?

怎样才能成为一位伟大的重复的例子?

r r-faq

2474
推荐指数
23
解决办法
28万
查看次数

用ggplot2分割小提琴情节

我想用ggplot创建一个分裂小提琴密度图,就像seaborn文档的这个页面上的第四个例子一样.

这是一些数据:

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))
)
Run Code Online (Sandbox Code Playgroud)

我可以像这样绘制躲闪的小提琴:

library('ggplot2')

ggplot(my_data, aes(x, y, fill=m)) +
  geom_violin()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在视觉上比较并排分布中不同点的宽度很难.我无法在ggplot中找到任何拆分小提琴的例子 - 这可能吗?

我找到了一个基本的R图形解决方案,但功能很长,我想突出显示分布模式,这些模式很容易在ggplot中作为附加层添加,但如果我需要弄清楚如何编辑该功能将更难.

r ggplot2 violin-plot ggproto

37
推荐指数
2
解决办法
1万
查看次数

用ggplot2和分位数分割小提琴曲线

为了绘制半密度,我使用了这篇文章中描述的功能:用ggplot2分割小提琴图

然而,当我想借鉴密度的位数,就像一个正常的geom_violin()geom_boxplot(),我得到一个错误信息.

我也有兴趣增加每半密度以上的观测数量.

这是我想要获得的一个例子:

data("diamonds")
library(ggplot2)

# Function described in a previous post
GeomSplitViolin <- ggproto("GeomSplitViolin", GeomViolin, draw_group = function(self, data, ..., draw_quantiles = NULL){
  data <- transform(data, xminv = x - violinwidth * (x - xmin), xmaxv = x + violinwidth * (xmax - x))
  grp <- data[1,'group']
  newdata <- plyr::arrange(transform(data, x = if(grp%%2==1) xminv else xmaxv), if(grp%%2==1) y else -y)
  newdata <- rbind(newdata[1, ], newdata, newdata[nrow(newdata), ], newdata[1, ])
  newdata[c(1,nrow(newdata)-1,nrow(newdata)), 'x'] <- round(newdata[1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggproto

7
推荐指数
1
解决办法
1828
查看次数

标签 统计

r ×3

ggplot2 ×2

ggproto ×2

r-faq ×1

violin-plot ×1