我正在try 更改图表的背景 colored颜色 .我的x轴是POSIXct格式的白天时间,并且每5分钟有一个测量值.在Y轴上,我有叶肉(chla)测量的数字数据,并且我使用VAR添加了太阳辐射数据(PARuw)(new = TRUE).这3个变量位于名为Spring的数据框架中.这是我的情节:

par(mfrow=c(1, 1), mar=c(2, 3, 1, 3))

plot(Spring$date_time, Spring$chla, xlab="", ylab="", type="n", 
     ylim=c(0, 6), las=1)
points(Spring$date_time, Spring$chla, pch=21, col="forestgreen", 
       bg="forestgreen", cex=.8)

lines(Spring$date_time, Spring$chla, col="forestgreen", lwd=5)

par(new=TRUE)

plot(Spring$date_time, Spring$PARuw, xlab="", ylab="", xaxt="n", 
     type="n", yaxt="n")

points(Spring$date_time, Spring$PARuw, pch=21, col="yellow2", 
       bg="yellow2", cex=.8)

lines(Spring$date_time, Spring$PARuw, col="yellow2", lwd=5)
axis(side=4, at=seq(0, 1200, by=200), labels=seq(0, 1200, by=200), las=1)

我添加数据帧的头部和尾部:

date_time             PARuw  chla
1 2023-04-23 02:00:00 1.954 4.735
2 2023-04-23 02:05:00 1.971 4.769
3 2023-04-23 02:10:00 1.736 4.671
4 2023-04-23 02:15:00 1.586 4.616
5 2023-04-23 02:20:00 1.566 4.912
6 2023-04-23 02:25:00 1.686 4.615 

date_time              PARuw  chla
283 2023-04-24 01:30:00 2.439 5.511
284 2023-04-24 01:35:00 2.250 5.402
285 2023-04-24 01:40:00 2.443 5.381
286 2023-04-24 01:45:00 2.330 5.386
287 2023-04-24 01:50:00 2.220 5.310
288 2023-04-24 01:55:00 2.472 5.313

enter image description here

我试图使用PARuw 20区分白天和晚上(如果这是真的,那么白天)并在多边形(函数)上使用它,但我不知道如何做好它.

推荐答案

你考虑过rect()吗?您需要x轴上的四个点,其中两个点来自PARuw > 20中的date_timerange,另一个来自par()$usr(绘图区域的坐标),在启动第一个绘图后.

> xday <- with(Spring, range(date_time[PARuw > 20]))
> op <- par(mfrow=c(1, 1), mar=c(2, 3, 1, 3))
> plot.new()
> ## solar
> plot.window(as.numeric(range(Spring$date_time)), range(Spring$PARuw))
> box()
> ## night bg
> pu <- par()$usr
> rect(pu[1], pu[3], xday[1], pu[4], border=NA, col=rgb(0, 0, 0, .3))
> rect(xday[2], pu[3], pu[2], pu[4], border=NA, col=rgb(0, 0, 0, .3))
> ## solar radiation
> with(Spring, lines(date_time, PARuw, col=rgb(1, .65, 0), lwd=2))
> with(Spring, points(date_time, PARuw, pch=3, col=rgb(1, .65, 0, .1)), cex=.8)
> axis(4, las=1, col=rgb(1, .65, 0), col.axis=rgb(1, .65, 0))
> ## chlorophyll
> par(new=TRUE)
> plot.window(as.numeric(range(Spring$date_time)), range(Spring$chla))
> with(Spring, lines(date_time, chla, col=rgb(.13, .54, .13), lwd=2))
> with(Spring, points(date_time, chla, pch=3, col='#218a211a', cex=.8))
> axis(2, las=1, col=rgb(.13, .54, .13), col.axis=rgb(.13, .54, .13))
> x1 <- seq.POSIXt(as.POSIXct('2023-04-23'), as.POSIXct('2023-04-24'), '6 hours')
> axis(1, at=x1, labels=strftime(x1, '%H:%M'))
> par(op)

enter image description here

我使用例如rgb(.13, .54, .13, .1)通过alpha=参数赋予 colored颜色 一些透明度.或者try 例如col='#218a211a''#RRGGBBαα'.还认为轴应该具有与线对应的 colored颜色 (黄色有点亮).


Data:

> dput(Spring)
structure(list(date_time = structure(c(1682208000, 1682208300, 
1682208600, 1682208900, 1682209200, 1682209500, 1682209800, 1682210100, 
1682210400, 1682210700, 1682211000, 1682211300, 1682211600, 1682211900, 
1682212200, 1682212500, 1682212800, 1682213100, 1682213400, 1682213700, 
1682214000, 1682214300, 1682214600, 1682214900, 1682215200, 1682215500, 
1682215800, 1682216100, 1682216400, 1682216700, 1682217000, 1682217300, 
1682217600, 1682217900, 1682218200, 1682218500, 1682218800, 1682219100, 
1682219400, 1682219700, 1682220000, 1682220300, 1682220600, 1682220900, 
1682221200, 1682221500, 1682221800, 1682222100, 1682222400, 1682222700, 
1682223000, 1682223300, 1682223600, 1682223900, 1682224200, 1682224500, 
1682224800, 1682225100, 1682225400, 1682225700, 1682226000, 1682226300, 
1682226600, 1682226900, 1682227200, 1682227500, 1682227800, 1682228100, 
1682228400, 1682228700, 1682229000, 1682229300, 1682229600, 1682229900, 
1682230200, 1682230500, 1682230800, 1682231100, 1682231400, 1682231700, 
1682232000, 1682232300, 1682232600, 1682232900, 1682233200, 1682233500, 
1682233800, 1682234100, 1682234400, 1682234700, 1682235000, 1682235300, 
1682235600, 1682235900, 1682236200, 1682236500, 1682236800, 1682237100, 
1682237400, 1682237700, 1682238000, 1682238300, 1682238600, 1682238900, 
1682239200, 1682239500, 1682239800, 1682240100, 1682240400, 1682240700, 
1682241000, 1682241300, 1682241600, 1682241900, 1682242200, 1682242500, 
1682242800, 1682243100, 1682243400, 1682243700, 1682244000, 1682244300, 
1682244600, 1682244900, 1682245200, 1682245500, 1682245800, 1682246100, 
1682246400, 1682246700, 1682247000, 1682247300, 1682247600, 1682247900, 
1682248200, 1682248500, 1682248800, 1682249100, 1682249400, 1682249700, 
1682250000, 1682250300, 1682250600, 1682250900, 1682251200, 1682251500, 
1682251800, 1682252100, 1682252400, 1682252700, 1682253000, 1682253300, 
1682253600, 1682253900, 1682254200, 1682254500, 1682254800, 1682255100, 
1682255400, 1682255700, 1682256000, 1682256300, 1682256600, 1682256900, 
1682257200, 1682257500, 1682257800, 1682258100, 1682258400, 1682258700, 
1682259000, 1682259300, 1682259600, 1682259900, 1682260200, 1682260500, 
1682260800, 1682261100, 1682261400, 1682261700, 1682262000, 1682262300, 
1682262600, 1682262900, 1682263200, 1682263500, 1682263800, 1682264100, 
1682264400, 1682264700, 1682265000, 1682265300, 1682265600, 1682265900, 
1682266200, 1682266500, 1682266800, 1682267100, 1682267400, 1682267700, 
1682268000, 1682268300, 1682268600, 1682268900, 1682269200, 1682269500, 
1682269800, 1682270100, 1682270400, 1682270700, 1682271000, 1682271300, 
1682271600, 1682271900, 1682272200, 1682272500, 1682272800, 1682273100, 
1682273400, 1682273700, 1682274000, 1682274300, 1682274600, 1682274900, 
1682275200, 1682275500, 1682275800, 1682276100, 1682276400, 1682276700, 
1682277000, 1682277300, 1682277600, 1682277900, 1682278200, 1682278500, 
1682278800, 1682279100, 1682279400, 1682279700, 1682280000, 1682280300, 
1682280600, 1682280900, 1682281200, 1682281500, 1682281800, 1682282100, 
1682282400, 1682282700, 1682283000, 1682283300, 1682283600, 1682283900, 
1682284200, 1682284500, 1682284800, 1682285100, 1682285400, 1682285700, 
1682286000, 1682286300, 1682286600, 1682286900, 1682287200, 1682287500, 
1682287800, 1682288100, 1682288400, 1682288700, 1682289000, 1682289300, 
1682289600, 1682289900, 1682290200, 1682290500, 1682290800, 1682291100, 
1682291400, 1682291700, 1682292000, 1682292300, 1682292600, 1682292900, 
1682293200, 1682293500, 1682293800, 1682294100), class = c("POSIXct", 
"POSIXt"), tzone = ""), chla = c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2.9403, 
2.8812, 2.8227, 2.7648, 2.7075, 2.6508, 2.5947, 2.5392, 2.4843, 
2.43, 2.3763, 2.3232, 2.2707, 2.2188, 2.1675, 2.1168, 2.0667, 
2.0172, 1.9683, 1.92, 1.8723, 1.8252, 1.7787, 1.7328, 1.6875, 
1.6428, 1.5987, 1.5552, 1.5123, 1.47, 1.4283, 1.3872, 1.3467, 
1.3068, 1.2675, 1.2288, 1.1907, 1.1532, 1.1163, 1.08, 1.0443, 
1.0092, 0.9747, 0.9408, 0.9075, 0.8748, 0.8427, 0.8112, 0.7803, 
0.75, 0.7203, 0.6912, 0.6627, 0.6348, 0.6075, 0.5808, 0.5547, 
0.5292, 0.5043, 0.48, 0.4563, 0.4332, 0.4107, 0.3888, 0.3675, 
0.3468, 0.3267, 0.3072, 0.2883, 0.27, 0.2523, 0.2352, 0.2187, 
0.2028, 0.1875, 0.1728, 0.1587, 0.1452, 0.1323, 0.12, 0.1083, 
0.0972, 0.0867, 0.0768, 0.0675, 0.0588, 0.0507, 0.0432, 0.0363, 
0.03, 0.0243, 0.0192, 0.0147, 0.0108, 0.0075, 0.0048, 0.0027, 
0.0012, 3e-04, 0, 3e-04, 0.0012, 0.0027, 0.0048, 0.0075, 0.0108, 
0.0147, 0.0192, 0.0243, 0.03, 0.0363, 0.0432, 0.0507, 0.0588, 
0.0675, 0.0768, 0.0867, 0.0972, 0.1083, 0.12, 0.1323, 0.1452, 
0.1587, 0.1728, 0.1875, 0.2028, 0.2187, 0.2352, 0.2523, 0.27, 
0.2883, 0.3072, 0.3267, 0.3468, 0.3675, 0.3888, 0.4107, 0.4332, 
0.4563, 0.48, 0.5043, 0.5292, 0.5547, 0.5808, 0.6075, 0.6348, 
0.6627, 0.6912, 0.7203, 0.75, 0.7803, 0.8112, 0.8427, 0.8748, 
0.9075, 0.9408, 0.9747, 1.0092, 1.0443, 1.08, 1.1163, 1.1532, 
1.1907, 1.2288, 1.2675, 1.3068, 1.3467, 1.3872, 1.4283, 1.47, 
1.5123, 1.5552, 1.5987, 1.6428, 1.6875, 1.7328, 1.7787, 1.8252, 
1.8723, 1.92, 1.9683, 2.0172, 2.0667, 2.1168, 2.1675, 2.2188, 
2.2707, 2.3232, 2.3763, 2.43, 2.4843, 2.5392, 2.5947, 2.6508, 
2.7075, 2.7648, 2.8227, 2.8812, 2.9403, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), PARuw = c(0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 286.8, 451.2, 613.200000000001, 
772.8, 930.000000000001, 1084.8, 1237.2, 1387.2, 1534.8, 1680, 
1822.8, 1963.2, 2101.2, 2236.8, 2370, 2500.8, 2629.2, 2755.2, 
2878.8, 3000, 3118.8, 3235.2, 3349.2, 3460.8, 3570, 3676.8, 3781.2, 
3883.2, 3982.8, 4080, 4174.8, 4267.2, 4357.2, 4444.8, 4530, 4612.8, 
4693.2, 4771.2, 4846.8, 4920, 4990.8, 5059.2, 5125.2, 5188.8, 
5250, 5308.8, 5365.2, 5419.2, 5470.8, 5520, 5566.8, 5611.2, 5653.2, 
5692.8, 5730, 5764.8, 5797.2, 5827.2, 5854.8, 5880, 5902.8, 5923.2, 
5941.2, 5956.8, 5970, 5980.8, 5989.2, 5995.2, 5998.8, 6000, 5998.8, 
5995.2, 5989.2, 5980.8, 5970, 5956.8, 5941.2, 5923.2, 5902.8, 
5880, 5854.8, 5827.2, 5797.2, 5764.8, 5730, 5692.8, 5653.2, 5611.2, 
5566.8, 5520, 5470.8, 5419.2, 5365.2, 5308.8, 5250, 5188.8, 5125.2, 
5059.2, 4990.8, 4920, 4846.8, 4771.2, 4693.2, 4612.8, 4530, 4444.8, 
4357.2, 4267.2, 4174.8, 4080, 3982.8, 3883.2, 3781.2, 3676.8, 
3570, 3460.8, 3349.2, 3235.2, 3118.8, 3000, 2878.8, 2755.2, 2629.2, 
2500.8, 2370, 2236.8, 2101.2, 1963.2, 1822.8, 1680, 1534.8, 1387.2, 
1237.2, 1084.8, 930.000000000001, 772.8, 613.200000000001, 451.2, 
286.8, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0)), row.names = c(NA, -288L), class = "data.frame")

R相关问答推荐

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

带有gplot 2的十字舱口

如何在R中添加截止点到ROC曲线图?

如何直接从Fortran到R的数组大小?

如何在R中合并两个基准点?

使用R闪光显示所有数据点作为默认设置

使用列/行匹配将两个不同维度的矩阵相加

KM估计的差异:SvyKm与带权重的调查

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

随机森林的带Shap值的蜂群图

将全局环境变量的名称分配给列表中的所有元素

我们如何在R中透视数据并在之后添加计算

R中的类别比较

如何将一列中的值拆分到R中各自的列中

从线的交点创建面

数据集上的R循环和存储模型系数

整理ggmosaic图的标签

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

我已经运行了几个月的代码的`Palette()`中出现了新的gglot错误

使用显式二元谓词子集化sfc对象时出错