好的,假设我有以下的绘图。
df = data.frame(date=c(rep(2008:2013, by=1)),
value=c(303,407,538,696,881,1094))
barplot(df$value, main="TITLE", col="gray", ylab="People", xlab="Years")
如何将背景更改为海军蓝?
我知道ggplot2可以实现,但不确定是否可以在基本图形中进行。
喜欢
par(bg = 'blue')
# Now do plot
通过一次谷歌搜索后,我们了解到您可以像Owen建议的那样设置整个绘图设备的背景颜色。如果您只想改变绘图区域,则必须执行类似于R-Help线程中所述的操作:
plot(df)
rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = "gray")
points(df)
barplot
函数有一个 add
参数,你很可能需要使用它。
base
R 的工作方式。我建议你只是逐渐习惯它。或者你可以转向像 ggplot2
这样的东西,它会减少冗长的绘图并换取一些控制权。 - Frans Rodenburg虽然这是一个旧问题,但我有一种更好的方法来解决它。不要使用rect()
而是使用polygon
。这样可以在不使用points
的情况下将所有内容保留在plot
中。而且你完全不需要去碰par
。如果你想自动化处理,让polygon
的坐标成为你数据的一个函数即可。
plot.new()
polygon(c(-min(df[,1])^2,-min(df[,1])^2,max(df[,1])^2,max(df[,1])^2),c(-min(df[,2])^2,max(df[,2])^2,max(df[,2])^2,-min(df[,2])^2), col="grey")
par(new=T)
plot(df)
polygon
的想法,但我并不完全相信不使用 par
更好。 使用 par
方法,对于任何绘图,代码都是相同的,但是这种方法需要根据数据进行调整,如果设置了 xlim
或其他参数,则需要再次进行调整。 - Gregor Thomas我使用abline()
函数来绘制极宽的垂直线以填充绘图空间:
abline(v = xpoints, col = "grey90", lwd = 80)
您需要先创建框架,然后绘制垂线,最后将点绘制在其上以使其可见。如果需要,您甚至可以使用第二个abline()
语句在灰色线条上覆盖薄白色或黑色线条。
示例:
xpoints = 1:20
y = rnorm(20)
plot(NULL,ylim=c(-3,3),xlim=xpoints)
abline(v=xpoints,col="gray90",lwd=80)
abline(v=xpoints,col="white")
abline(h = 0, lty = 2)
points(xpoints, y, pch = 16, cex = 1.2, col = "red")
结合本帖子和R-help的信息?rect,我得出了这个漂亮的昼夜节律数据图(24小时绘图)。背景矩形的脚本如下:
>rect(xleft, ybottom, xright, ytop, col = NA, border = NULL)
>i <- 24*(0:8)
>rect(8+i, 1, 24+i, 130, col = "lightgrey", border=NA)
>rect(8+i, -10, 24+i, 0.1, col = "black", border=NA)
这个想法是用8小时光照和16小时黑暗来表示24小时的一天。
祝好,
Romário
adjustcolor("blanchedalmond",alpha.f = 0.3)
上述函数提供了一个颜色代码,该代码对应于输入颜色的透明版本(在本例中,输入颜色为“blanchedalmond”)。
输入alpha值的范围为0到1的比例尺,其中0表示完全透明,1表示完全不透明。 (在这种情况下,给定alpha为.3的半透明“blanchedalmond”的代码是“#FFEBCD4D
”。请确保包括井号符号)。您可以使用此线程中joran提供的函数将新的半透明颜色变为背景颜色:
rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = "blanchedalmond")
par(new = TRUE)
时,这不是最佳解决方案,因为bg
参数会自动设置new = FALSE
。 - fdetsch