在ggplot中,使用像因子这样的数字变量来创建多个图,但是使用数字值来控制间距

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ggplot中,使用像因子这样的数字变量来创建多个图,但是使用数字值来控制间距相关的知识,希望对你有一定的参考价值。

如果我制作这样的数据框:

d1 <- data.frame(class=rep(c("A", "B", "C"), each=100),
                value=c(rnorm(100,0,1), rnorm(100,1,1), rnorm(100,2,1)))

我可以很容易地用每个班级的小提琴制作小提琴图:

ggplot(d1, aes(x=class, y=value)) + geom_violin()

enter image description here

但是如果我制作一个数据框并像这样用数字值绘制图形:

d2 <- data.frame(timepoint=rep(c(1, 2, 3.5), each=100),
                 value=c(rnorm(100,0,1), rnorm(100,1,1), rnorm(100,2,1)))
ggplot(d2, aes(x=timepoint, y=value)) + geom_violin()

我只得到一个小提琴图,如下所示:

enter image description here

我可以factor(timepoint)

ggplot(d2, aes(x=factor(timepoint), y=value)) + geom_violin()

但是我得到一个等间距的图。我想要的是第三个小提琴在右侧更远的图,因为它在时间= 3.5。即,间隔反映了timepoint的实际值。

enter image description here

我意识到这不是小提琴图所特有的,它可以是箱线图或任何其他类型的图。有什么方法可以做我想要的吗?

答案

根据要求,

group=timepoint添加到您的美学组合中,例如:

ggplot(d2, aes(x=timepoint, y=value, group=timepoint)) + geom_violin()

以上是关于在ggplot中,使用像因子这样的数字变量来创建多个图,但是使用数字值来控制间距的主要内容,如果未能解决你的问题,请参考以下文章

ggplot 手动图例 scale_fill_manual 用于单独的颜色因子

ggplot2() 按因子绘制一个变量与自身的关系?

R语言ggplot2可视化条形图(bar plot)配置因子变量的全局填充色方案这样不同数据集相同因子的填充色具有一致性(Fix colors to factor levels)

R:ggplot 中的因子水平被视为连续数据集

ggplot2中facet_wrap( )的高阶用法

R语言ggplot2可视化多因子分组条形图使用position_dodge2函数配置所有的条形宽度相同不管分组是否只有一个因子