r - 通过散点图上垂直堆叠的点绘制线段

标签 r ggplot2

我有一个相当大的数据集,与以下示例非常相似:

a <-data.frame(x=sort(c(replicate(4,c(1:4,5:8,9:12,13:16,17:20,21:25)))),y=c(rnorm(100)),z=c(replicate(20,"a"),replicate(20,"b"),replicate(20,"c"),replicate(20,"d"),replicate(20,"e")))

# install and enable ggplot2, if necessary
# install.packages('ggplot2') 
library(ggplot2)

ggplot(a, aes(x=x, y=y, col=z)) + geom_point(size=3)

example plot

我想通过每组堆叠点绘制颜色匹配的垂直线段,但只能通过这些点。在这种情况下,abline() 不会成功。我怀疑需要使用 segments() 或 lines(),但我不知道如何在不手动输入每个起点/终点的情况下自动执行此过程。

更新

重温最终代码:

a <-data.frame(x=sort(c(replicate(4,c(1:4,5:8,9:12,13:16,17:20,21:24)))),y=c(rnorm(96)),z=c(replicate(24,"a"),replicate(24,"b"),replicate(24,"c"),replicate(24,"d")))

ggplot(a, aes(x=x, y=y, col=z)) + 
geom_point(size=3) +
stat_summary(aes(color=z), fun.ymin = min, fun.ymax = max, fun.y = max, show.legend = F)

以下是当我将磅值更改为 1 时发生的情况:

size=1

如何控制所有点的大小?

最佳答案

您可以使用stat_summary(不确定为什么必须使用fun.y)

ggplot(a, aes(x=x, y=y, col=z)) + 
  geom_point(size=3) +
  stat_summary(fun.ymin = min, fun.ymax = max,
               aes(colour=z),
               fun.y = max)

如果您希望图例只显示点,您可以将 show.legend=F 添加到 stat_summary()

enter image description here

关于r - 通过散点图上垂直堆叠的点绘制线段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953196/

相关文章:

r - 如何使用函数通过ggplot2转换轴值?

r - 比较同一向量的相邻元素(避免循环)

r - 如何进行 data.table 滚动连接?

r - 停止执行另一个代码的代码

r - 是否可以将附加参数传递给scales包的trans_new?

r - ggplot2:并排的条形图,一个条堆叠,另一个没有

r - 使用 levelplot 更改光栅面板标题

r - 使用 R 计算镜头图每个 bin 中的平均点

r - 是否可以将 geom_ribbon 扩展到 xlimits?

r - ggplot2 - 具有组内比例而不是频率的多组直方图