大点的虚线 geom_line,但是点要更近一些

4

我想知道在geom_line中是否可以增加点线上的点的大小,同时让这些点更加紧密。以下是R代码,提供了一个基本的可复制示例,以及另一个图表,展示了我想要看到的效果。

library(dplyr)
library(ggplot2)
set.seed(5223)
myDF <- data.frame(x=rnorm(20,0,1),
                   y=runif(20,0,20))
myDF <- myDF %>% 
  mutate(From8to12 = y>=8 & y<=12)

ggplot(myDF,aes(x=x,y=y,col=From8to12)) +
  geom_point() +
  geom_hline(yintercept=8,lty="dotted") +
  geom_hline(yintercept=12,lty="dotted",size=1.5)

未编辑的图片

未编辑的图片

(手动)编辑的图片(使用画图)

我希望能让这些点变得更大,但同时又更加靠近。有可能吗?我在网上没有找到任何相关信息。

编辑后的图片


3
不确定是否有更好的方法,但也许您更喜欢不同的线型 - svenhalvorson
2个回答

8

这类似于R语言的基本绘图中的lty,指定虚线和间隙的长度是一种方法:

ggplot(myDF,aes(x=x,y=y,col=From8to12)) +
  geom_point() +
  geom_hline(yintercept=8,lty="dotted") +
  geom_hline(yintercept=12,lty="11",size=1.5)

"11" 表示短划线长为1,间隔长为1,并将其复制。您可以在这里了解更多。

enter image description here


1
太棒了!我喜欢 R 语言的复杂性。谢谢你! - Sumner18
1
这很不错。学到了新东西。 - tjebo
1
非常感谢这个答案! - mrbrich

1

编辑 我原本认为除非对底层绘图函数进行严格的黑客攻击,否则不可能实现 - @StupidWolf的答案证明了我错了。 我的建议是使用geom_pointshape = 15(填充正方形)绘制每个点。 然后问题就在于你的最终绘图大小,以及你选择的参数(即“点”之间的距离和它们的大小)

P.S. 令人印象深刻的是,您实际上已经成功在画板中生成了您的图像。

library(tidyverse)
set.seed(5223)
myDF <- data.frame(x = rnorm(20, 0, 1), y = runif(20, 0, 20))

dot_dis <- 0.05
x_line <- seq(min(myDF$x), max(myDF$x), dot_dis)
y_line <- 12

ggplot() +
  geom_point(aes(x, y), data = myDF) +
  geom_point(aes(x_line, y_line), shape = 15, size = 1.5)

这段内容是由reprex package (v0.3.0)创建于2020年2月18日。


1
在Paint中编辑图像大约花了10分钟。我放大了线条,并减少了每个正方形之间的像素数量。进行一些快速的拖放,然后进行一些复制和粘贴,重新绘制白色线条,就完成了! - Sumner18

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接