利用不同的列值更改 ggplot 中的 x 轴标签值

问题描述 投票:0回答:1

我有以下代码,我在其中拟合对数线性模型并绘制拟合

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 轴?,但对我来说不同的是我有另一列我想使用的日期时间。

r ggplot2 axis
1个回答
0
投票

由于

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 为确定中断次数而执行的实际计算可能会变得相当复杂。

© www.soinside.com 2019 - 2024. All rights reserved.