我有以下代码,我在其中拟合对数线性模型并绘制拟合
r1 = lm(log10(df$size) ~ df$time + ...)
plt <- ggplot(data = df, aes(x=time, y=size))+
geom_point(size = 0.1) + # Scatter
geom_line(aes(y = 10^predict(r1))) +
scale_y_log10()
数据框
df
包含3列,即datetime
、time
和size
。 Time
是 datetime
的规范化转换,因此 r1 可以采用浮点值而不是日期时间。日期时间增加 10 分钟。
日期时间 | 时间 | 尺寸 |
---|---|---|
2022-07-01 00:00:00 | 0 | 4 |
2022-07-01 00:00:10 | 600 | 34 |
2022-07-01 00:00:20 | 1200 | 12 |
我现在正在解决的问题是我想用
datetime
值而不是time
值替换x轴值。
我们可以使用
scale_x_continuous(breaks = df$time, labels = df$datetime)
,但是,这将在每个点放置x个标签。相反,我想以某种方式使用默认选择的轴标签(可能使用 waiver()
),然后从 df$datetime
. 中选择相同索引处的值
我尝试使用 在带有新标签的 ggplot 中手动添加 x 轴?,但对我来说不同的是我有另一列我想使用的日期时间。
由于
time
是数字,waiver()
选择的默认轴中断可能与df
中的值不完全匹配。由于数据集中的日期时间变量在每一行中递增固定数量,也许以下内容对您有用?
df.sliced <- df %>%
slice(round(seq(1, n(),
length.out = 5)))
plt + scale_x_continuous(breaks = df.sliced$time, labels = df.sliced$datetime)
为了方便,我用5作为休息次数; ggplot 为确定中断次数而执行的实际计算可能会变得相当复杂。