如何使用R中的ggplot2垂直堆叠重叠点

问题描述 投票:2回答:2

我的数据具有相同的x和y值,但是被另一个变量分类。但是,由于它们具有相同的x和y值,因此我只在图中看到一个圆。我想看到每个圆圈清楚地分开并且在相同的x / y坐标上彼此叠加。

我已经尝试过使用抖动和position_dodge,但它没有清楚地垂直分隔值。

library(ggplot2)
library(scales)
library("RColorBrewer")

x<- c("1","1","1","1","1","1")

y <- c("1","1","1","2","2","2")

z <- c("Treatment 1","Treatment 2","Treatment 3","Treatment 4","Treatment 5","Treatment 6")

data<- data.frame (x,y,z)

ggplot(data=data,aes (x=y, y=x))+ 
  coord_flip()+
  geom_point(data=data, aes(x=y, y= x, color = z, pch=16,size =3 ))+
  xlab("ID")+
  ylab("Time")+ 
  scale_shape_identity()+

  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5))

各种处理应垂直分开,以便我们看到每种颜色的圆圈而不是一个圆圈。任何帮助将非常感激!

r ggplot2 data-visualization
2个回答
0
投票

position_dodge适合我,但你必须根据输出的大小调整闪避width

我也简化了代码,你不必在data = data层重复aes()geom_point()映射 - 它们将继承自ggplot()调用。你不应该把pch = 16size = 3等常量放在aes()中。将它们留在aes()之外,它们将被视为常数,不产生具有1值且不需要scale的图例。

ggplot(data=data,aes (x=y, y=x, color = z)) + 
  coord_flip() +
  geom_point(pch = 16, size = 3, position = position_dodge(width = 0.2)) +
  xlab("ID") +
  ylab("Time") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5))

enter image description here


0
投票

ggbeeswarm包有一些很酷的函数来绘制重叠点

Beeswarm情节(也就是列散点图或小提琴散点图)是绘制通常重叠的点的一种方式,以便它们彼此相邻。除了减少过度绘图外,它还有助于可视化每个点的数据密度(类似于小提琴图),同时仍然可以单独显示每个数据点。

ggbeeswarm提供了两种不同的方法来使用ggplot2创建beeswarm风格的地块。它通过添加两个新的ggplot geom对象来实现:

  • geom_quasirandom:使用van der Corput序列或Tukey纹理(Tukey和Tukey“显示经验分布的条带:I。纹理点条”)来分隔点以避免过度绘图。这使用sherrillmix / vipor。
  • geom_beeswarm:使用beeswarm库来进行基于点大小的偏移。
library(ggplot2)
library(scales)

x <- c("1", "1", "1", "1", "1", "1")
y <- c("1", "1", "1", "2", "2", "2")
z <- c("Treatment 1", "Treatment 2", "Treatment 3", "Treatment 4", "Treatment 5", "Treatment 6")
data <- data.frame(x, y, z)

# install.packages('ggbeeswarm', dependencies = TRUE)
library(ggbeeswarm)
ggplot(data = data, aes(x = y, y = x)) +
  geom_quasirandom(aes(col = z), varwidth = TRUE, groupOnX = TRUE, alpha = 3/4, size = 2) +
  coord_flip() +
  xlab("ID") +
  ylab("Time") +
  scale_shape_identity() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5))

reprex package创建于2019-04-05(v0.2.1.9000)

© www.soinside.com 2019 - 2024. All rights reserved.