ggplot2:如何让点与小提琴图分组?
ggplot2: How to get dots to group with violin plots?
我想绘制 x 轴为 exon
的小提琴图,但我想对这些图进行分组。如果它只是小提琴,这会起作用,但是当我出于某种原因添加抖动时,它没有响应正确的 aes
并且正在自行绘制?这是带有错误屏幕截图的可重现代码。谢谢!
set.seed(1)
df <- data.frame(
exons = c(rep("e1", 200), rep("e2", 200)),
values = rnorm(400, 200, 40),
group = c(
rep("g1", 75), rep("g2", 75), rep("g3", 50),
rep("g1", 75), rep("g2", 75), rep("g3", 50)
)
)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin() +
geom_jitter(shape = 16, position = position_jitter(0.07))
因此,如果绘图有效,则应该在每个外显子的每个组中绘制点,但这里显然不是。
你是说类似的意思吗?
set.seed ( 1)
df = data.frame (
exons = c(rep("e1", 200), rep("e2", 200))
,values = rnorm(400,200,40)
,group = c(rep("g1", 75), rep("g2", 75), rep("g3",50),
rep("g1", 75), rep("g2", 75), rep("g3",50) )
)
ggplot(df, aes(y= values , x= exons , fill = group )) +
geom_violin()+
geom_jitter(shape=16, position=position_jitter(width = NULL, height = NULL))
您可以定义 x 和 y 方向的抖动程度。
您可能需要 position_dodge()
和 position_jitterdodge()
library(ggplot2)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin(position = position_dodge(width = 0.9)) +
geom_point(position = position_jitterdodge(seed = 1, dodge.width = 0.9))
另一个值得一提的选项是 ggbeeswarm
包中的 geom_quasirandom()
函数
library(ggbeeswarm)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin(position = position_dodge(width = 0.9)) +
geom_quasirandom(dodge.width = 0.9, varwidth = TRUE)
由 reprex package (v0.3.0)
于 2019-08-10 创建
我想绘制 x 轴为 exon
的小提琴图,但我想对这些图进行分组。如果它只是小提琴,这会起作用,但是当我出于某种原因添加抖动时,它没有响应正确的 aes
并且正在自行绘制?这是带有错误屏幕截图的可重现代码。谢谢!
set.seed(1)
df <- data.frame(
exons = c(rep("e1", 200), rep("e2", 200)),
values = rnorm(400, 200, 40),
group = c(
rep("g1", 75), rep("g2", 75), rep("g3", 50),
rep("g1", 75), rep("g2", 75), rep("g3", 50)
)
)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin() +
geom_jitter(shape = 16, position = position_jitter(0.07))
因此,如果绘图有效,则应该在每个外显子的每个组中绘制点,但这里显然不是。
你是说类似的意思吗?
set.seed ( 1)
df = data.frame (
exons = c(rep("e1", 200), rep("e2", 200))
,values = rnorm(400,200,40)
,group = c(rep("g1", 75), rep("g2", 75), rep("g3",50),
rep("g1", 75), rep("g2", 75), rep("g3",50) )
)
ggplot(df, aes(y= values , x= exons , fill = group )) +
geom_violin()+
geom_jitter(shape=16, position=position_jitter(width = NULL, height = NULL))
您可以定义 x 和 y 方向的抖动程度。
您可能需要 position_dodge()
和 position_jitterdodge()
library(ggplot2)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin(position = position_dodge(width = 0.9)) +
geom_point(position = position_jitterdodge(seed = 1, dodge.width = 0.9))
另一个值得一提的选项是 ggbeeswarm
包中的 geom_quasirandom()
函数
library(ggbeeswarm)
ggplot(df, aes(y = values, x = exons, fill = group)) +
geom_violin(position = position_dodge(width = 0.9)) +
geom_quasirandom(dodge.width = 0.9, varwidth = TRUE)
由 reprex package (v0.3.0)
于 2019-08-10 创建