小编Kri*_*rup的帖子

如何将ggplot2的geom_dotplot()与fill和group一起使用

我真的很喜欢ggplot2::geom_dotplot()可以很好地将点堆叠到类别中间的方式,但我似乎无法将其与填充颜色相结合.

让我们来看一个例子:

# test data
tmpData <- data.frame(x=c(rep('x', 3),rep('y', 3)), y=c(1,1,2,1,2,2), fill=rep(c('A', 'B', 'B'), 2))

# Plot without fill color
ggplot(tmpData, aes(x=x, y=y)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

导致这个情节:

没有颜色的Dotplot

但是当我添加fill参数时:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) +   
   geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

填充似乎覆盖了在"x"上完成的分组,导致两个点(x,1)(x,1)被折叠,我希望它们具有不同的颜色.

带有颜色的Dotplot

当我尝试指定组时,忽略填充颜色:

ggplot(tmpData, aes(x=x, y=y, group=x, fill=fill)) +
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

指定组的Dotplot

通过启用堆栈组可以避免崩溃:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) +
    geom_dotplot(binaxis = "y", stackgroups=TRUE, stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

带有stackgroups的dotpoot

但后来我将数据的中心丢失到了其他3个图中的"x"和"y".

有没有办法使用geom_dotplot()两个组和填充?

r ggplot2

17
推荐指数
1
解决办法
6938
查看次数

如何仅从GGally包中更改ggpairs函数中"较低"图的参数

我有以下示例

data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]

ggpairs(diamonds.samp, columns=8:10,
    upper=list(continuous='cor'),
    lower=list(continuous = 'points'),
    diag=list(continuous='density'),
    axisLabels='show'
)
Run Code Online (Sandbox Code Playgroud)

结果是一个非常好的数字:ggpair函数的结果

但我的问题是,在真实的数据集中,我有很多要点,我想改变点geom的参数.我想减小点大小并使用较低的alpha值.然而,我可以用它适用于所有情节的"param"选项来做到这一点 - 而不仅仅是较低的情节:

ggpairs(diamonds.samp, columns=8:10,
        upper=list(continuous='cor'),
        lower=list(continuous = 'points'),
        diag=list(continuous='density'),
        params=c(alpha=1/10),
        axisLabels='show'
)
Run Code Online (Sandbox Code Playgroud)

导致这个情节: ggpair函数的结果

有没有办法将参数应用于"低"图 - 或者我是否必须使用如主题如何调整plotmatrix中的图形设置主题中所建议的自定义图的能力

提前 - 谢谢!

r ggplot2

8
推荐指数
1
解决办法
3135
查看次数

R:在自定义类中启用自动完成

我创建了一个新类,我想启用R的自动完成功能.

一个例子可能是:

# Define class
setClass("customList",
     representation("list")
)

# Make example
tmp <- new("customList",
           list(
               test='a',
               b=1:3
           )        
)
Run Code Online (Sandbox Code Playgroud)

结果如下:

tmp
# An object of class "customList"
# [[1]]
# [1] 'a'
#
# [[2]]
# [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

此自定义列表确实具有可以使用的名称和命名参数

names(tmp)
[1] "a" "b"
tmp$test
[1] 'a'
Run Code Online (Sandbox Code Playgroud)

现在我想以某种方式启用自动完成,所以我可以简单地输入

tmp$t <TAB> 
Run Code Online (Sandbox Code Playgroud)

得到

tmp$test
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

提前 - 谢谢!

r autocomplete

6
推荐指数
1
解决办法
198
查看次数

R:维恩图中颜色的重叠部分

我认为维恩图是比较数据的极有用的方法。问题在于,一旦我开始拥有多个(3个或更多)类,圆圈的大小就不再能够指示重叠的大小。

我想做的是通过重叠的大小而不是类标签的大小为维恩图中的每个字段着色:

例如,当我绘制普通的维恩图时:

require(VennDiagram)
# Make data
oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames <- replicate(1000, oneName())

GroupA <- sample(geneNames, 400, replace=FALSE)
GroupB <- sample(geneNames, 750, replace=FALSE)
GroupC <- sample(geneNames, 250, replace=FALSE)
GroupD <- sample(geneNames, 300, replace=FALSE)

v1 <- venn.diagram(list(A=GroupA, B=GroupB, C=GroupC, D=GroupD), filename=NULL, fill=rainbow(4))
grid.newpage()
grid.draw(v1)
Run Code Online (Sandbox Code Playgroud)

看起来像这样: 结果维恩图

最终的维恩图被分为15个单独的字段,每个字段都有自己的颜色和数字。每个单独字段的颜色由fill参数指示的类别/组的颜色确定。

我要做的是改为使用指示字段大小的颜色渐变为每个单独的字段上色,以便在视觉上易于发现最大/最小的组(类似于热图/水平图的着色方式)

有没有办法在R中做到这一点?

r data-visualization venn-diagram

5
推荐指数
1
解决办法
5111
查看次数

ggplot2 中高级小提琴图的中位数和四分位数

这个问题是对这里提出的问题的答案的扩展:ggplot2 中小提琴图的中位数和四分位数

该解决方案效果很好,但是在使用诸如 fill='foo' 之类的选项时,如何扩展它以同时考虑小提琴图的位置

例子:

require(ggplot2)

median.quartile <- function(x){
  out <- quantile(x, probs = c(0.25,0.5,0.75))
  names(out) <- c("ymin","y","ymax")
  return(out) 
}

ggplot(data=mtcars,aes(x=factor(cyl),y=drat, fill=factor(am)))+
    geom_violin() +
    stat_summary(fun.y=median.quartile,geom='point')
Run Code Online (Sandbox Code Playgroud)

小提琴情节与摘要

此处的汇总统计数据混杂,因为它没有考虑由于填充星体映射造成的位移。

这可以解决吗?

提前 - 谢谢!

r ggplot2

3
推荐指数
1
解决办法
2465
查看次数