R中的图表中的网格

41

有没有一条命令可以轻松地在R图中添加网格?


或者更好的是,使用ggplot2进行绘图。它有很多真正令人惊叹的默认设置(包括可以自定义的网格),并且具有非常自然和周到的语法,可以根据您正在处理的数据将美学属性分配给情节的各个方面。 - metasoarous
1
也许考虑将接受的答案更改为这个 - zx8754
5个回答

60

grid命令好像会在它想要的任何地方画网格线。我通常使用abline将线条精确放置在我想要的位置。例如,

abline(v=(seq(0,100,25)), col="lightgray", lty="dotted")
abline(h=(seq(0,100,25)), col="lightgray", lty="dotted")

祝你好运!


8
太棒了。grid()急需参数来确定每个轴上第一条网格线的位置,而这个替代方案非常出色。 - Hank

47

请查看 help(grid),它与标准图形一起工作--这是一个简短的示例:

R> set.seed(42)
R> plot(cumsum(rnorm(100)), type='l')
R> grid()

ggplot2软件包默认显示网格,这是由于其“图形语法”哲学。而lattice有一个函数panel.grid()可在自定义面板函数中使用。

顺便提一下,有一些搜索函数可以用于帮助查询,如help.search("something"),并且还有一个名为sos的整个软件包,可使R网络搜索更加富有成果。


在需要网格背景的情况下,请参见以下答案:https://dev59.com/-XI-5IYBdhLWcg3wN1hD#42729195。 - zx8754

19

如果您没有使用自定义刻度间隔,您可以直接从plot()命令控制网格和轴参数:

plot(cumsum(rnorm(100)), type='l', panel.first=grid())

plot.default()文档提供了有关这些参数的更多信息。


1
小心,如果您使用公式方法 plot(x~y, panel.first= grid()),它将无法正常工作。 - rvezy
1
panel.first 参数是惰性求值的,它经常会破坏网格。可惜。 - ivan866
这个答案是不正确的,因为它将在默认轴的刻度线中添加网格线。@cbare 的答案应该被采纳。 - JASC

5

我同意cbare的观点。使用abline仅在您真正需要时绘制线条。

以下是我上次代码中的示例:

abline(v=c(39448, 39814), col="grey40")
abline(h=c(-0.6, -0.4, -0.2, 0.2,0.4,0.6), col="grey10", lty="dotted") 

请记住:

v表示垂直线,h表示水平线。

使用以下指令:

lty 表示虚线,color表示浅色线条。

这样可以得到“无重型网格”的效果。


2

另一个选项是使用 axis 函数来绘制垂直和水平网格线:

x <- rnorm(100)
plot(x)
# Vertical grid
axis(1, tck = 1, lty = 2, col = "gray")
# Horizontal grid  
axis(2, tck = 1, lty = 2, col = "gray")

# Only vertical grid
plot(x)
# Vertical grid
axis(1, tck = 1, lty = 2, col = "gray")

# Only horizontal grid
plot(x)
# Horizontal grid  
axis(2, tck = 1, lty = 2, col = "gray")

本文创建于2022年8月20日,使用了reprex v2.0.2

您可以使用at参数指定网格线的位置。


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