在ggplot2中有一种方法可以获得情节类型"b"吗?见例子:
x <- c(1:5)
y <- x
plot(x,y,type="b")
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想用它们的值替换点,以获得类似于这个着名示例的东西:

编辑:这里有一些样本数据(我想在情节类型为"b"的方面绘制每个"猫"):
df <- data.frame(x=rep(1:5,9),y=c(0.02,0.04,0.07,0.09,0.11,0.13,0.16,0.18,0.2,0.22,0.24,0.27,0.29,0.31,0.33,0.36,0.38,0.4,0.42,0.44,0.47,0.49,0.51,0.53,0.56,0.58,0.6,0.62,0.64,0.67,0.69,0.71,0.73,0.76,0.78,0.8,0.82,0.84,0.87,0.89,0.91,0.93,0.96,0.98,1),cat=rep(paste("a",1:9,sep=""),each=5))
Run Code Online (Sandbox Code Playgroud)
此致,穆萨
通过绘制没有任何内容的图来设置轴。
plot(x, y, type = "n")
Run Code Online (Sandbox Code Playgroud)
然后使用text做数据点。
text(x, y, labels = y)
Run Code Online (Sandbox Code Playgroud)
您可以使用添加线段lines。
lines(x, y, col = "grey80")
Run Code Online (Sandbox Code Playgroud)
编辑:完全无法解决问题中提及ggplot的问题。尝试这个。
dfr <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(dfr, aes(x, y)) +
geom_text(aes(x, y, label = y)) +
geom_line(col = "grey80")
p
Run Code Online (Sandbox Code Playgroud)
另一个编辑:给定您的新数据集和请求,这就是您所需要的。
ggplot(df, aes(x, y)) + geom_point() + geom_line() + facet_wrap(~cat)
Run Code Online (Sandbox Code Playgroud)
另一个编辑:我们开始处理一个真正的问题。就像在“如何使界限不尽人意”中一样。
简短的答案是,这不是在ggplot2中执行此操作的标准方法。正确的方法是geom_segment在数据点之间使用和内插。但是,这需要付出很大的努力,因此我建议您更轻松一些:在您的要点周围画一个大的白色圆圈。不利的一面是,它使网格线看起来很愚蠢,因此您必须摆脱那些网格线。
ggplot(df, aes(x, y)) +
facet_wrap(~cat) +
geom_line() +
geom_point(size = 5, colour = "white") +
geom_point() +
opts(panel.background = theme_blank())
Run Code Online (Sandbox Code Playgroud)
gridExtra 中有一个实验性的 grob 可以在网格图形中实现这一点,
library(gridExtra)
grid.newpage() ; grid.barbed(pch=5)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |