gpt4 book ai didi

r - 每组使用 2 种颜色进行绘图

转载 作者:行者123 更新时间:2023-12-03 07:55:41 25 4
gpt4 key购买 nike

我有一个数据如下:

data<-data.frame(ymdhms=c(20230301000000,20230301000010,20230301000020,20230301000030,20230301000040,
20230301000050,20230301000100,20230301000110),
switch=c(0,0,0,1,0,0,1,0),
power=c(20,21,22,23,20,19,29,28))

ymdhms 表示年、月、日、时、分、秒。例如,20230301000000` 表示 2023 年 3 月 1 日 00:00:00。

ymdhms 具有 10 秒时间间隔的值。对于 switch 列,1 表示开关打开,0 表示开关关闭。我想要做的是相对于ymdhms绘制power。所以 y 轴应该是功率,x 轴应该是时间。我希望 x 轴表示为时间顺序,并且仅指示已经过去了多少秒。我还想在视觉上区分 switch 是打开还是关闭。如果开关关闭,我想将该区域着色为红色。如果开关打开,我想将该区域着色为绿色。

你能建议一种好方法来形象化我想做的事情吗?

最佳答案

我可以尝试绘制一个简单的线图。

首先加载需要的包

library(ggplot2)
library(lubridate)

然后制作一个数据框:

data <- data.frame(ymdhms=c(20230301000000,20230301000010,20230301000020,20230301000030,20230301000040,20230301000050,20230301000100,20230301000110),switch=c(0,0,0,1,0,0,1,0), power=c(20,21,22,23,20,19,29,28))

接下来,将日期时间数据转换为 POSIXct 格式

# ymdhms to POSIXct
data$timestamp <- ymd_hms(data$ymdhms)

接下来,创建一个状态“Switch”。这将有助于为图中的数据着色

# status variable 
data$switchStatus <- ifelse(data$switch == 1, "on", "off")

最后,根据数据绘制图表

# plot
ggplot(data, aes(x = timestamp, y = power, color = switchStatus)) +
geom_line() +
geom_rect(aes(xmin = lag(timestamp, default = first(timestamp)),
xmax = timestamp, ymin = -Inf, ymax = Inf,
fill = switchStatus), alpha = 0.2, inherit.aes = FALSE) +
scale_fill_manual(values = c("red", "green")) +
xlab("Time (seconds)") + ylab("Power") +
theme_classic()

这将产生如下所示的内容:

enter image description here

如果需要,您还可以绘制变体,例如步骤图等。

请告诉我这是否有帮助。

步骤图:

# step chart
ggplot(data, aes(x = timestamp, y = power, group = 1)) +
geom_step(aes(color = factor(switch)), direction = "hv") +
scale_color_manual(values = c("red", "green")) +
labs(x = "Time", y = "Power", color = "Switch")

enter image description here

关于r - 每组使用 2 种颜色进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76084805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com