我真的很喜欢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)
导致这个情节:

但是当我添加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)被折叠,我希望它们具有不同的颜色.

当我尝试指定组时,忽略填充颜色:
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)

通过启用堆栈组可以避免崩溃:
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)

但后来我将数据的中心丢失到了其他3个图中的"x"和"y".
有没有办法使用geom_dotplot()两个组和填充?
我有以下示例
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)
结果是一个非常好的数字:
但我的问题是,在真实的数据集中,我有很多要点,我想改变点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)
导致这个情节:

有没有办法将参数应用于"低"图 - 或者我是否必须使用如主题如何调整plotmatrix中的图形设置主题中所建议的自定义图的能力?
提前 - 谢谢!
我创建了一个新类,我想启用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)
怎么做到这一点?
提前 - 谢谢!
我认为维恩图是比较数据的极有用的方法。问题在于,一旦我开始拥有多个(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中做到这一点?
这个问题是对这里提出的问题的答案的扩展: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)

此处的汇总统计数据混杂,因为它没有考虑由于填充星体映射造成的位移。
这可以解决吗?
提前 - 谢谢!